对于监视当前在命令行上运行并使用ScheduledExecutorService的Java应用程序的系统,我想编写一个简单的Web应用程序版本,在Servlet container中运行,如Apache Tomcat或Eclipse Jetty .
我已经阅读了Quartz作为Web应用程序的流行job schedulers之一 . 将此应用程序从 ScheduledExecutorService
移植到Quartz会更好(可能是因为更好的servlet容器集成)?
向应用程序添加另一个库依赖项不是问题,我对使用 ScheduledExecutorService
的技术原因感兴趣 .
3 回答
这取决于你使用它的是什么 .
Quartz对于编程时间非常有用,例如:每小时一小时 .
ScheduledExecutorService对于重复不必在特定时间发生的任务非常有用 . 它更简单,可能更有效 . 如果你有这个工作,它告诉我你不需要Quartz .
ScheduledExecutorService在较低级别运行,您必须自己实施所有调度监视/维护工具 .
Quartz有tons of facilities,例如Job Persistence,Transactions,Clustering等 .
Java的Executor解决方案允许您:
立即运行任务
在初始延迟后启动任务(并且可选地在后续延迟周期后重新运行任务) .
但是,Quartz在运行任务/工作的时间和频率方面赋予您极大的灵活性 . 例如,周一至周五工作周期间的一个时间表以及周末期间的其他时间表(或根本没有) . 或者在这个月的最后一天,你最后一天是在28日,29日,30日或31日 . 以下是cron样式调度所适应的灵活性的更多示例 - http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html#examples
使用Java 's library is easier but for anyone that wants a jump start into a bare-bones codebase example of Quartz working, I' ve将此模板放在一起免费下载使用 - https://github.com/javateer/quartz-example