求教:
quartz定时任务如何防止前一次任务未执行完成,取消本次任务的触发,从而防止同一个任务的并发执行?
public class JobOne implements Job {
private static final Logger LOGGER = LoggerFactory
.getLogger(JobOne.class);
/**
* 任务是否正在执行标记 :false--未执行; true--正在执行; 默认未执行
*/
private static boolean isRun = false;
public void execute(JobExecutionContext jobContext)
throws JobExecutionException {
// 任务正在执行,跳过本次执行
if (isRun) {
JobDetail jobDetail = jobContext.getJobDetail();
LOGGER.info(jobDetail.getGroup() + "." + jobDetail.getName()
+ ":前一次未执行完,跳过本次任务!");
return;
}
isRun = true;
task();
isRun = false;
}
/**
* 任务执行的主题
*/
protected void task(){
};
}
小弟原本想在每个任务中都加一个静态变量,标记前一次任务的触发是否执行完成,如果没执行完成跳过本次任务的触发,感觉多此一举,目前没想到好的方法,求教---不胜感激。
------解决方案--------------------

------解决方案--------------------
我记得有这个配置的,不过有好久没用过了。如果不能配置,那你就用synchronized手工同步一下就可以了。
------解决方案--------------------
你的方法也可以,或者用一个线程池,被吊起的任务放到线程池里,如果线程任务又被调起就判断线程池里是否有之前相同的任务,如果有就跳过。没有就启动线程并放到线程池里。