如何设置为QUARTZ JOB仅在另一个JOB完成时启动,停止?

时间:2014-04-04 11:18:42

标签: java quartz-scheduler jobs

我有一个QUARTZ JOB,每10分钟启动一次。

如果JOB在10分钟内没有完成,那么在接下来的第10分钟,另一个JOB将开始。

我想要的是:如果前一个JOB已经完成运行,则下一个JOB(每10分钟后)应该仅启动。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:10)

Quartz Documentation

  

@DisallowConcurrentExecution是一个可以添加到的注释   告诉Quartz不要执行a的多个实例的Job类   给定的工作定义(指的是给定的工作类)   同时。注意那里的措辞,因为它被选中了   小心。在上一节的示例中,如果   " SalesReportJob"有这个注释,而不是只有一个实例   " SalesReportForJoe"可以在给定时间执行,但它可以执行   与" SalesReportForMike"的实例同时发生。约束   基于实例定义(JobDetail),而不是实例定义   工作班。然而,它决定了(在石英的设计期间)   在类本身上进行注释,因为它确实如此   通常会对类的编码方式产生影响。

如果您不希望SalesReportForMike和SalesReportForJoe同时运行,那么您可以将调度程序的ThreadPool大小设置为1.因此,在任何给定时间只会运行一个作业。

另请查看StatefulJob

答案 1 :(得分:1)

查看DisallowConcurrentExecution注释,该注释将阻止同一作业的多个实例同时运行。