我想问一下,在我打断他之后是否可以开始一份工作。 (10秒钟后)。
或者有人知道如何在Quarz Scheduler中重新启动单个作业吗?
中断代码:
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) {
}
感谢您的帮助 问候
答案 0 :(得分:1)
这应该是完全可能的。请注意,通过中断Quartz作业(通过调用中断(jobKey)方法),您只需要为作业提供一个提示,以完成它正在做的任何事情并提前完成。如果作业忽略中断请求,则它将继续执行。为了能够接收中断请求,作业必须使用调度程序调用的单个方法实现org.quartz.InterruptableJob接口。在该方法中,您通常设置某种中断标志(例如,作业类中的AtomicBoolean字段),并且在执行方法中,在可以安全中断作业的阶段检查标志的值(例如,在独立的数据库事务之间等) 。)
再次启动作业时,Quartz将分配并执行新的作业实例。您可能希望使用@DisallowConcurrentExecution注释您的作业,以防止在您中断作业时出现的情况,并且在您再次尝试启动作业时它没有完成运行。注释将阻止同一作业的两个并发作业执行(即同一作业类的不同作业实例)。