spring定时任务 是串行还是并行

 我来答
蘑菇饭资讯
推荐于2016-11-21 · TA获得超过6万个赞
知道大有可为答主
回答量:1.7万
采纳率:90%
帮助的人:1.2亿
展开全部
防止job并行运行的几种解决方案
一、JOB State
在通过MethodInvokingJobDetailFactoryBean在运行中动态生成的Job,配置的xml文件有个concurrent属性,表示job是否可以并行运行:如果一个job的业务处理发费的时间超过了job的启动的间隔时间(repeatInterval),这个属性非常有用。如果为false,那么,在这种情况下,当前job还在运行,那么下一个job只能延时运行。如果为true,那么job就会并行运行。在实际的应用中应该配置为true/false,要根据需要了(废话)。

二、如果通过继承QuartzJobBean实现job的话,默认情况下QuartzJobBean是implements org.quartz.Job接口的,也就是说job示例是stateless的,会出现前面所述的并行情况。而代码中却要求job任务必需串行,解决办法:在job子类中继续implements org.quartz.StatefulJob。那么这个job实例变成了Stateful,job任务也就是串行的了。

注:

在Quartz中,如果实现org.quartz.Job接口,那么这个job是stateless的,job实例的参数不能在多个任务之间共享,如果实现org.quartz.StatefulJob,这个job是个单例的,job实例的属性可以从当前任务传递到下一个任务。
王道lsy
2018-05-25 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:9.9万
展开全部
下面这么配置是串行,并行方法正在找
<context:component-scan base-package="com.Test" />
<bean id="test" class="com.Test.test"></bean>
<task:annotation-driven executor="executor" scheduler="scheduler" />
<task:executor id="executor" pool-size="5" />
<task:scheduler id="scheduler" pool-size="5" />
<task:scheduled-tasks>
<task:scheduled ref="test" method="job1" cron = "0/30 * 9-18 * * *"/>
<task:scheduled ref="test" method="job2" cron = "0/30 * 9-18 * * *"/>
</task:scheduled-tasks>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式