约束两个作业不要在Quartz-Scheduler中同时运行

时间:2012-05-18 16:01:57

标签: java quartz-scheduler

在Quartz-Scheduler中,是否可以定义有关作业的执行约束?

实际上,我有两个实现接口Job的类:JobA和JobB。

JobA将每分钟安排一次。 JobB将每小时安排一次。

我不希望JobA和JobB同时运行。

注意:JobA和JobB不会做同样的事情。

感谢您的回答。

1 个答案:

答案 0 :(得分:4)

没有直接的支持。如果它是同一个工作,你可以将它定义为有状态 - 这样的工作不能同时运行定义。

否则,您可以将Quartz工作线程的数量限制为1,另外您可以定义线程优先级以选择首先运行哪个作业。不幸的是,当涉及更多的工作时,这个解决方案将无法扩展。

最后,您可以手动实现此功能,而无需涉及Quartz。我想你不希望同时访问某些操作或某些资源。考虑锁定该方法/资源,以便两个作业同时运行,但一个阻塞并等待另一个完成。