62,621
社区成员
发帖
与我相关
我的任务
分享
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(){
};
}
用Timer实现吧
public class JobTwo implements Job{
private static ThreadPoolExecutor pool=(ThreadPoolExecutor)Executors.newCachedThreadPool();
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
BlockingQueue<Runnable> queue = pool.getQueue();
if(queue.size()>0){
System.out.println("前一次任务未执行完成跳过本次任务");
return;
}
pool.submit(new RealJob());
}
class RealJob implements Runnable{
/**
* 任务的执行主题
*/
@Override
public void run() {
//ToDo 任务的业务逻辑
}
}
}
有没有方法可以获取Scheduler调度用的线程池看了接口好像也没,谢谢指导。