java下quartz 怎么设置单线程执行

Mr_XK 发布于 2016/10/06 22:33
阅读 1K+
收藏 1

如题,目前使用quartz 定时器执行方法,但是他总是多线程进行执行,由于项目需要同步操作数据库,请问下怎么设置。谢谢!

DefaultQuartzScheduler_Worker-1连接关闭
DefaultQuartzScheduler_Worker-1连接已经开启......
DefaultQuartzScheduler_Worker-1连接关闭
DefaultQuartzScheduler_Worker-1连接已经开启......

加载中
0
宅男小何
宅男小何
防止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实例的属性可以从当前任务传递到下一个任务。
hotsmile
hotsmile
回复 @宅男小何 : 我用注解了也木有效果
Mr_XK
Mr_XK
回复 @宅男小何 : 麻烦你了,谢谢
宅男小何
宅男小何
我之前用的是注解的方式,但是我现在没找到代码了,等我找到了,再贴上来吧
返回顶部
顶部