我想问一下我打扰他之后是否可以开始一个工作。 (10秒后)。
还是有人知道如何在Quarz Scheduler中重新启动单个Job?
中断代码:
for(int i=0; i < 2; i++) {
try {
Thread.sleep(7000L);
// tell the scheduler to interrupt our job
sched.interrupt(job.getKey());
} catch (Exception e) {
}
谢谢你的帮助
问候
最佳答案
那应该是完全可能的。请注意,通过中断Quartz作业(通过调用interrupt(jobKey)方法),您只会提示作业完成其工作并过早完成。如果作业忽略中断请求,则它将继续执行。为了能够接收中断请求,作业必须使用调度程序调用的单个方法来实现org.quartz.InterruptableJob接口。在该方法中,通常设置某种中断标志(例如,作业类中的AtomicBoolean字段),在execute方法中,在安全地中断作业的阶段(例如,独立的DB事务之间等)检查标志的值。 )
当您再次开始作业时,Quartz将分配并执行一个新的作业实例。您可能需要使用@DisallowConcurrentExecution注释作业,以防止中断作业并且在您尝试再次启动该作业时该作业无法完成运行的情况。注释将阻止同一作业的两个并发作业执行(即,同一作业类的不同作业实例)。