关于spring定时任务的并发问题
来源:互联网 发布:淘宝怎么装饰店面 编辑:程序博客网 时间:2024/05/29 16:15
原帖地址:http://nesuk.iteye.com/blog/1582557
关于Spring集成Quartz的concurrent属性
以前经常在任务调度程序中使用Spring集成的Quartz,这种方式可以用简单的声明式配置即可实现定时任务,并结合了Spring自身的Bean的管理功能,非常方便。配置样本如下:
<!-- 要调用的工作类 --> <bean id="webStart" class="com.quartz.webStart"></bean> <!-- 定义调用对象和调用对象的方法 --> <bean id="jobtask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="webStart"/> </property> <!-- 调用类中的方法 --> <property name="targetMethod"> <value>start1</value> </property> <property name="concurrent"> <value>false</value> </property> </bean> <!-- 定义触发时间 --> <bean id="doTime1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="jobtask1"/> </property> <!-- cron表达式 --><!-- 秒 分 时 日 月 周 年 0 0/10 * * * ?--> <property name="cronExpression" value="0 0/2 * * * ?"> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime1"/> </list> </property> </bean>
其中concurrent属性标识的解释为:对于相同的JobDetail,当指定多个Trigger时, 很可能第一个job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个job将不会在第一个job完成之前开始。
那么此处的第二个job到底是被推迟执行了,还是被取消了呢? 今天带着这个疑问做了一个小实验,具体做法如下:将任务的Trigger设置为每10秒钟执行一次,然后在执行的任务体内让Thread暂停15秒钟,这样不同的job之间肯定会有时间上的重叠。当启动程序之后,发现前一个job执行结束的时刻的秒数为15,而且第二个本来在10s就执行的job马上就启动了。
由此可见,concurrent属性实际是将job推迟执行了。
那么此处的第二个job到底是被推迟执行了,还是被取消了呢? 今天带着这个疑问做了一个小实验,具体做法如下:将任务的Trigger设置为每10秒钟执行一次,然后在执行的任务体内让Thread暂停15秒钟,这样不同的job之间肯定会有时间上的重叠。当启动程序之后,发现前一个job执行结束的时刻的秒数为15,而且第二个本来在10s就执行的job马上就启动了。
由此可见,concurrent属性实际是将job推迟执行了。
0 0
- 关于spring定时任务的并发问题
- 关于Spring的定时任务
- 关于spring的quartz(定时任务执行)问题,
- 关于Spring定时任务
- 关于Spring整合quartz的定时任务
- 关于Spring定时任务的说明
- 关于spring中的定时任务
- spring的定时任务
- spring的定时任务
- spring的定时任务
- Spring的定时任务
- spring的定时任务
- spring的定时任务
- spring的定时任务
- spring的定时任务
- Spring的定时任务
- 关于Spring+quartz定时任务时触发2次的问题
- spring-boot | 多线程并发定时任务
- 使用JQuery实现HTML表格的单元格合并
- oracle中常用函数大全
- 指针的使用
- buildTree,无限递归建树
- CB(协同商务)
- 关于spring定时任务的并发问题
- 201604-2 俄罗斯方块
- (HDU)1075
- 【Unity动画】之基础概念
- easyui databox传值问题和格式解析
- mac修改屏幕截图保存位置
- Android Gilde使用
- .h和.cpp文件的区别
- iOS面试题