quartz并发(总结)

1.http://blog.csdn.net/pdw2009/article/details/50195639

 

 

Your job class needs to implement StatefulJob, or alternatively, if you are using Quartz 2.x, be annotated with @DisallowConcurrentExecution.

This is how concurrent execution can be controlled in Quartz, and in particular MethodInvokingJobDetailFactoryBean just uses different job classes depending on the value of concurrent.

 
quartz job有时我们希望当前的job执行后,再执行下次的job,有两种方法可实现
1、job类实现 StatefulJob接口
2、 在job类前加上@DisallowConcurrentExecution



有时我们不希望程序一次动就执行job等 待下次触发,在quartz.properties中加上:
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true

 

 

 

 

2.https://my.oschina.net/liujiawan/blog/503697?p={{page}}

 

在执行定时任务的时候,把定时任务的时间设置为10分钟执行一次,由于数据量很大,第一个十分钟还没执行结束,第二个十分钟已经开始了,这样就造成了并发,但是又不想用

java中的锁,这样很纠结,在网上找了好多资料

其实很简单,我们只要在detail的参数里加上一句话就行了,把这个job设置成有状态的job

<property name="concurrent" value="false" /> ③ 指定最终封装出的任务是否有状态

通过concurrent属性指定任务的类型,默认情况下封装为无状态的任务,如果希望目标封装为有状态的任务,仅需要将concurrent设置为false就可以了。Spring通过名为concurrent的属性指定任务的类型,能够更直接地描述到任务执行的方式(有状态的任务不能并发执行,无状态的任务可并发执行)

 

 

 

3.http://blog.csdn.net/tiantangpw/article/details/41120137

 

 

 

4.https://zhidao.baidu.com/question/414090365.html

 

在执行的方法入口加一个锁呗,每次进入的时候判断一下是否已锁就行了。job还是5分钟调一次。
 
追问
如何来实现呢?
 
追答
public class Job {
	private Object lock = new Object();
                private volatile boolean isRunning = false;
	public void run() {
			synchronized(lock) {
			if(isRunning ){
				return;
			}
	
			isRunning = true; 
                                               //执行。。。
                           isRunning = false; 

		}
          }

 

 

5.http://www.oschina.net/question/436266_129634%3Fsort%3Dtime?sort=time

不并发有两种方式:

1、使用spring xml配置,对jobDetail bean的concurrent属性设置为false;(隐约记得不写默认好像也是false)(推荐)

2、将job设置成有状态,即继承statefuljob接口。这个比较麻烦,不推荐使用。

3、或者将quartz properties配置中的连接池大小,改为1,这样肯定就不能并行(不推荐)

4、可以使用类静态变量标识是否当前job正在运行

 

6.

 

 

7.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值