永发信息网

spring的quartz可以设置timeout参数吗

答案:2  悬赏:0  手机版
解决时间 2021-03-01 03:57
spring的quartz可以设置timeout参数吗
最佳答案
可以,自己写一个,参考:
import org.apache.log4j.Logger;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.UnableToInterruptJobException;

public class TimeOutThread extends Thread{
private static Logger log = Logger.getLogger(TimeOutThread.class);
private static long DEFAULT_TIMEOUT = 100l; //缺省的超时时间是100S;
private JobExecutionContext context;
private long timeout = -1l; //超时的秒数;
private TimeOutThread(){
super();
}
public TimeOutThread(JobExecutionContext context){
this();
this.context = context;
if( context != null ){
long _temp = context.getJobDetail().getJobDataMap().getLong("TimeOut");
this.timeout = _temp > 0l ? _temp : DEFAULT_TIMEOUT;
}
}
public void run(){
if( timeout == -1 )
return;
try{
sleep(timeout * 1000l);
}catch(InterruptedException ire){
log.error(ire);
}
try {
((InterruptableJob) context.getJobInstance())
.interrupt();
} catch (UnableToInterruptJobException e) {
throw new RuntimeException("exception", e);
}
}
}

import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;

public class DefaultListener implements JobListener{
private final static Logger log = Logger.getLogger(DefaultListener.class);
TimeOutThread _timeout;
public String getName() {
return "DefaultListener";
}
public void jobExecutionVetoed(JobExecutionContext context) {
// TODO Auto-generated method stub
}
public void jobToBeExecuted(JobExecutionContext context) {
_timeout = new TimeOutThread(context);
_timeout.start();
}
public void jobWasExecuted(JobExecutionContext context,
JobExecutionException jobException) {
_timeout.interrupt();
}
}

主要原理是利用JobListener机制,Job开始执行时,启动一个值守的Thread,先休眠规定的TimeOut时间,等休眠完后,假如还未执行完,就将这个Job给interrupt调。
全部回答
应该不能吧。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列关于民法期间、期日的表述中,正确的有(
屋顶漏水用什么油漆_
嘈杂伴恶心吞酸,口臭心烦,渴喜冷饮,舌红苔
唯缘阁地址有知道的么?有点事想过去
看到一款想买的包包,小CK,请问有谁知道这款
上海市嘉定区外冈粮油管理所地址在什么地方,
中国联通广顺营业厅地址在什么地方,想过去办
标记输入是240V的变压器,可以插到120V的交流
金牛座的女生异性缘怎么这么差啊!都没有人喜
笔记本电脑连接宽带显示宽带连接错误651怎么
出师表的考点'
高原反应有什么症状,遇到高原反应怎么办?如
谁的青春不迷茫插曲好像是朴树唱的叫啥
打架致受害人两处轻伤怎么判?自己也有轻微伤
四顺超市地址在什么地方,想过去办事
推荐资讯
我怎么打不开阿里妈妈
中烟长沙卷烟厂大托库区在什么地方啊,我要过
为确诊牙龈瘘管的病源牙,应作A.瘘管探诊B.牙
福瑞堂药房地址在什么地方,想过去办事
c语言ping程序中文注释
西安的名胜古迹。。
重装系统后,电脑不能播放光盘了。怎么办?
吴昕的脸怎么了?
交行信用卡逾期还款有什么后果
怎么发送链接
我有个朋友,她一直目中无人,有没有办法改变
仪征兴和再生资源有限公司在哪里啊,我有事要
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?