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

发布于 2021-11-27 06:35:12 字数 266 浏览 692 评论 4

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

风柔一江水 2021-12-03 21:11:17

我之前用的是注解的方式,但是我现在没找到代码了,等我找到了,再贴上来吧

嘦怹 2021-12-03 20:18:25

回复
@宅男小何 : 麻烦你了,谢谢

回眸一笑 2021-12-03 18:30:52

回复
@宅男小何 : 我用注解了也木有效果

做个少女永远怀春 2021-12-03 14:29:33

防止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实例的属性可以从当前任务传递到下一个任务。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文