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

新建的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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值