Java Web应用程序中的Quartz与ScheduledExecutorService

对于监视当前在命令行上运行并使用ScheduledExecutorService Java应用程序的系统,我想编写一个简单的Web应用程序版本,以便在像Apache TomcatEclipse Jetty这样的Servlet容器中运行。

我已经读过Quartz作为Web应用程序的流行作业调度程序之一。 将此应用程序从ScheduledExecutorService移植到Quartz会更好(可能是因为更好的servlet容器集成)?

向应用程序添加另一个库依赖项不是问题,我对反对使用ScheduledExecutorService技术原因感兴趣。

这取决于你使用它的是什么。

石英对于编程时间非常有用,例如每小时一小时。

ScheduledExecutorService对于重复不必在特定时间发生的任务非常有用。 它更简单,可能更有效。 如果你有这个工作,它告诉我你不需要Quartz。

ScheduledExecutorService在较低级别运行,您必须自己实施所有调度监视/维护工具。

Quartz拥有大量的工具 ,如工作持久性,交易,聚类等。

Java的Executor解决方案允许您:

  1. 立即执行任务
  2. 在初始延迟之后启动任务(并且可选地在后续延迟周期之后重新运行任务)。

但Quartz在运行任务/工作的时间和频率方面赋予您极大的灵活性。 例如,周一至周五工作周期间的一个时间表以及周末期间的其他时间表(或根本不是)。 或者在本月的最后一天,您不必弄清楚某个月的最后一天是在28日,29日,30日还是31日。 以下是cron样式调度所适应的灵活性的更多示例 – http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html#examples

使用Java的库比较容易,但是对于想要开始使用Quartz工作的简单代码库示例的人来说,我已将此模板放在一起以供免费下载使用 – https://github.com/javateer/quartz-example