博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz总结(四):动态修改定时器二
阅读量:6037 次
发布时间:2019-06-20

本文共 1683 字,大约阅读时间需要 5 分钟。

前文:http://www.cnblogs.com/LiuChunfu/p/5598806.html 提到了一种动态修改定时器的方法,

其本质就是在job方法中注入Schedular的对象,从Schedular中获取Trigger(触发器),然后修改触发器的条件,重新启动。

前文中的方法,其实已经涉及到了循环调用。

Job类 => Job => Trigger => Schedular =>Job类。

这样是很容易发生问题的,也确实在实际项目中发生了问题,特别是当Schedular中有多个trigger的时候,注入实际的Job工作类时候报错了,产生的原因应该就是因为循环调用的问题。

方法2:

既然我们已经通过在Srping的Bean的XML文件中配置了SchedulerFactory产生的Bean,那么完全可以在实际的Job中通过@Resource或者@Autowired注入,再仔细一思考,仍然不对啊,这个和方法一的循环调用一样,会出现问题(实际也是)。

此时处理办法是:懒加载Schdular的类,用到的时候才加载。

代码如下:

Java代码:

public class TestJob {    @Autowired    private TestService testSevice;    public void doSomething() {        testSevice.sayHi();        System.err.println("****:" + TimeUtils.getCurrentTime());    }    @Autowired    @Qualifier("scheduler")   @Lazy    private Scheduler scheduler;    /**     * 重置定时任务     * @Title: restJob      * @Description: TODO(这里用一句话描述这个方法的作用)      * @param  @param time     * @param  @throws Exception      * @return void    返回类型      * @throws     */    public void restJob(long time) throws Exception {        TriggerKey triggerKey = new TriggerKey("testTrigger", Scheduler.DEFAULT_GROUP);        SimpleTriggerImpl simpleTrigger = (SimpleTriggerImpl) scheduler.getTrigger(triggerKey);        simpleTrigger.setRepeatInterval(time);        scheduler.rescheduleJob(triggerKey, simpleTrigger);    }}

 

转载于:https://www.cnblogs.com/LiuChunfu/p/5605253.html

你可能感兴趣的文章
一周小程序学习 第1天
查看>>
小孩的linux
查看>>
SpringMVC、MyBatis声明式事务管理
查看>>
开发者详解:端游及手游服务端的常用架构
查看>>
JavaScript History对象
查看>>
在 Windows 下安装 Oracle 11g XE (Express Edition)
查看>>
ListView优化
查看>>
【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
查看>>
vs2015添加vc助手
查看>>
检测点1.1
查看>>
android--------阿里 AndFix 热修复
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务 (七)高可用的分布式配置中心(Spring Cloud Config)...
查看>>
Oozie与Coordinator调度讲解及系统时区配置与定时触发两种配置方式
查看>>
RGB_YUV_YCbCr
查看>>
tesseract 安装及使用
查看>>
优化SqlServer--数据压缩
查看>>
SharePoint 自定义WebPart之间的连接
查看>>
231. Power of Two
查看>>
control.add()
查看>>
p点到(a,b)点两所在直线的垂点坐标及p点是否在(a,b)两点所在直线上
查看>>