java在中断后在Quarz调度程序中启动单个作业
我想问一下,在我打断他之后,是否可以开始一份工作。(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) {
}
谢谢你的帮助 问候
# 1 楼答案
这应该是完全可能的。请注意,通过中断Quartz作业(通过调用interrupt(jobKey)方法),您只会提示该作业完成它正在做的任何事情,并提前完成。如果作业忽略了中断请求,那么它将继续执行。为了能够接收中断请求,作业必须实现org。石英InterruptableJob接口,具有调度器调用的单个方法。在该方法中,您通常会设置某种中断标志(例如,作业类中的AtomicBoolean字段),在execute方法中,您会在安全中断作业的阶段(例如,在独立的DB事务之间等)检查标志的值
当您再次启动作业时,Quartz将分配并执行一个新的作业实例。您可能希望使用@DisallowConcurrentExecution对作业进行注释,以防止在您尝试再次启动作业时中断作业且作业未完成运行的情况。注释将阻止同一作业的两个并发作业执行(即同一作业类的不同作业实例)