quartz定时任务如何防止前一次任务未执行完成,直接跳过本次任务的启动? 我记得有这个配置的,不过有好久没用过了。如果不能配置,那你就用synchronized手工同步一下就可以了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 需要引入Spring才可以配置这个参数吧 我记得有这个配置的,不过有好久没用过了。如果不能配置,那你就用synchronized手工同步一下就可以了。用synchronized ? 那需要创建一个静态变量,对这个静态变量加锁实现?quartz每次触发一个任务都是会新建一个对象的,只能对静态变量synchronized? 这样做也不太好吧,最坏的情况可能是第一次启动任务执行了很久,接连第二次,第三次启动,都会请求这个锁,这种实现也不好,除非用一个超时锁。 这种方法可行,根据我的理解应该在每个Job中有一个静态的线程池对象,每个任务要继承Runnable或Callable接口,大概需要这么实现: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调度用的线程池看了接口好像也没,谢谢指导。 真怀疑你没看过官方的文档。有个statefulejob ,就是你这个用途 百分求助:一道数据结构+算法的题。求围观求解决 关于substring和indexOf截取字符串 Linux执行命令的问题 一个关于java 线程锁的疑问 JNI调用的C++异常怎么办 JNI的问题 谁能帮我写段加法啊!!!!!! 如何除去RandomAccessFile的writeBytes()输出的TXT文件中多余的两个字节 ? java的四舍五入问题(1.15是1.2;1.45就是1.4?)真是搞不懂,我用的是DecimalFormat的方式(在线等) 求各位一段java小程序.... ========求个正则========
我记得有这个配置的,不过有好久没用过了。如果不能配置,那你就用synchronized手工同步一下就可以了。
用synchronized ? 那需要创建一个静态变量,对这个静态变量加锁实现?quartz每次触发一个任务都是会新建一个对象的,只能对静态变量synchronized? 这样做也不太好吧,最坏的情况可能是第一次启动任务执行了很久,接连第二次,第三次启动,都会请求这个锁,这种实现也不好,除非用一个超时锁。
这种方法可行,根据我的理解应该在每个Job中有一个静态的线程池对象,每个任务要继承Runnable或Callable接口,大概需要这么实现:
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调度用的线程池看了接口好像也没,谢谢指导。