我使用Quartz Scheduler执行10个作业。所有这些工作都有其自己的触发因素。因此它们是异步执行的。
但是,现在我需要其中2个作业以更特定的方式执行。可以说Job1每偶数分钟执行一次,而Job2每奇数分钟执行一次。现在,我希望Job2等待Job1完成。 示例:Job1在10:02开始执行。在10:03,将触发Job2的触发器。但是,在Job2开始执行之前,它会查看Job1是否完成。
我为实现Job接口的作业类找到了注释@DisallowConcurrentExecution
。我以为这样做会起作用,但是随后我读到它只会禁止并发执行具有相同JobKey(name,group)的作业。但是我不能为我的工作使用相同的JobKey。因此,我认为这种注释仅适用于一项工作。
您是否知道我该如何解决我的问题?非常感谢。
答案 0 :(得分:0)
您可以定义一个静态变量来标记Job1是否完成。创建Job2时,可以在代码中执行之前检查静态变量。
答案 1 :(得分:0)
通过此调用检查现有正在运行的作业的详细信息,并采取适当的措施。
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
请参阅此Jobs status