java quartz 停止正在进行的任务解决方案

来源:互联网 发布:现货数据行情分析系统 编辑:程序博客网 时间:2024/06/13 20:51
新建的Job实现InterruptableJob,在Job中实现interrupt()方法。如下:

 

public abstract class TestJob implements InterruptableJob {
private boolean _interrupted = false;
@Override
public void interrupt() throws UnableToInterruptJobException {
System.out.println(“外界正在调用调度器停止这个任务key: ” + _jobKeyName+”,执行其他任务。”);
_interrupted = true;
}

 

当要立即停止当前正在运行的任务的时候,通过调用scheduler1.pauseTrigger(“监听名称”,”监听组名称”)(该方法表示接下来的任务将暂停该监听器,也就暂停了任务,但是不会停止正在运行的任务);scheduler1.interrupt(“任务名称”,”任务组名称”);。调用scheduler1.interrupt这个方法就会执行Job中实现的interrupt() 方法,从而改变了变量_interrupted ,在执行中进行这个标记判断就可实现中断任务了,如:

for (int i = 0; i < 10; i++) {

if(_interrupted)break;
float wd = JavaJNA.instance.ReadSensor(ip,port,1,1,wdtype,wdattribute);
for (int j = 0; j<3; j++) {
if(String.valueOf(wd).equals(“-999.9″)){
wd = JavaJNA.instance.ReadSensor(ip,port,1,1,wdtype,wdattribute);
}else
break;
}
if(_interrupted)break;
float sd = JavaJNA.instance.ReadSensor(ip,port,1,1,sdtype,sdattribute);
for (int j = 0; j<3; j++) {
if(String.valueOf(sd).equals(“-999.9″)){
sd = JavaJNA.instance.ReadSensor(ip,port,1,1,sdtype,sdattribute);
}else
break;
}s

}

0 0
原创粉丝点击