Java Quartz在Web应用中的应用

Java Quartz在Web应用中的应用,java,quartz-scheduler,Java,Quartz Scheduler,我对在web应用程序中调度作业有一个问题。如果我们必须在web应用程序中调度作业,我们可以使用JavautilTimer/TimerTask或Quartz(还有其他调度机制,但我考虑了Quartz)。我正在考虑使用哪一个,当我访问网站时,它说使用计时器会产生不良影响,因为它会在最后一行创建一个超出容器控制的线程。其他页面讨论了Quartz及其功能,但我可以看到Quartz还使用线程和/或线程池来调度任务。我猜这些线程也不在容器控制之下 有人能向我澄清一下吗 在我的web应用程序中使用Quartz

我对在web应用程序中调度作业有一个问题。如果我们必须在web应用程序中调度作业,我们可以使用JavautilTimer/TimerTask或Quartz(还有其他调度机制,但我考虑了Quartz)。我正在考虑使用哪一个,当我访问网站时,它说使用计时器会产生不良影响,因为它会在最后一行创建一个超出容器控制的线程。其他页面讨论了Quartz及其功能,但我可以看到Quartz还使用线程和/或线程池来调度任务。我猜这些线程也不在容器控制之下

有人能向我澄清一下吗 在我的web应用程序中使用Quartz而不产生挂起线程或线程锁定问题是否安全?
提前感谢

这两种方法都创建了非托管线程。我使用Quartz进行调度,而不是使用java定时器,因为它提供了更大的灵活性(例如cron表达式),而且它具有更好的可管理性。

如果我不得不在一行中说,我会说使用Quartz,因为它将为您管理与调度相关的低级工作。使用计时器,您可以完成quartz所做的一切(甚至让计时器线程保持轮询以检查web应用程序是否正在运行,否则退出)。但这需要您在代码中完成。有了石英,你就可以从盒子里拿出来了

现在是细节 石英提供 1.工作持久性 2.托管线程池,以便创建适当数量的线程,并使作业在此之后等待。 3.要与web应用程序集成的初始化servlet。当应用程序关闭时,我想它会关闭你的线程,但我还没有尝试过。所以我不会对此发表太多评论。 4.基于RMI的调度,适用于群集环境

还有其他的,但这些是人们更频繁使用石英的最大动机

有谁能向我澄清一下,在我的web应用程序中使用Quartz而不产生挂起线程或线程锁定问题是否安全

quartz和JDK计时器都会启动无法访问javaee上下文信息的非托管线程,这是最大的问题。此外,它们可以在[application server]不知情的情况下使用资源,在管理员无法控制资源数量和使用情况的情况下存在,并妨碍应用服务器正常关闭或从故障中恢复资源的能力(请参阅)

话虽如此,我并没有遇到挂起的线程或锁定问题(我想这取决于您如何处理它们)

如果这真的是一个问题,请考虑使用JSR-23 7定时器和工作管理器实现(与托管线程一起工作),而不是使用石英或JDK定时器。