在Quartz-Scheduler中,是否可以定义有关作业的执行约束?
实际上,我有两个实现接口Job的类:JobA和JobB。
JobA将每分钟安排一次。 JobB将每小时安排一次。
我不希望JobA和JobB同时运行。
注意:JobA和JobB不会做同样的事情。
感谢您的回答。
答案 0 :(得分:4)
没有直接的支持。如果它是同一个工作,你可以将它定义为有状态 - 这样的工作不能同时运行定义。
否则,您可以将Quartz工作线程的数量限制为1,另外您可以定义线程优先级以选择首先运行哪个作业。不幸的是,当涉及更多的工作时,这个解决方案将无法扩展。
最后,您可以手动实现此功能,而无需涉及Quartz。我想你不希望同时访问某些操作或某些资源。考虑锁定该方法/资源,以便两个作业同时运行,但一个阻塞并等待另一个完成。