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

Sly*_*y33 5 java quartz-scheduler

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

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

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

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

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

谢谢你的回答.

Tom*_*icz 4

对此没有直接支持。如果是同一个作业,您可以将其定义为有状态的 - 此类作业不能同时运行定义。

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

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