Quartz执行逻辑(二)触发器状态的变更

1.获取trigger

执行时首先要获取到那些将要触发的触发器,会有一个调度线程去查找QRTZ_TRIGGERS表中状态为WAITING的trigger。获取到的trigger的状态会被置为acquired。

2.触发trigger

获取到的将要触发的trigger的nextFireTime和当前时间十分接近时,quartz此时会去把acquired改变为executing。如果不允许job并发执行的,此时还会把当前QRTZ_TRIGGERS表中状态为WAITING,ACQUIRED,PAUSED的改成BLOCKED。当前trigger如果没有下次触发时间,则直接把触发器状态置为COMPLETE。

3.释放trigger

相对于执行流程中的获取来说的释放。在Quartz执行逻辑(一)中说明了最后真正执行job的业务逻辑是在JobRunShell类中run方法中。该方法的最后会获得一个代表本次执行结果的code,然后调用JobStoreSupport中的方法去根据这个代表结果的code来去更新trigger的状态。这个code的类型是Trigger接口中的CompletedExecutionInstruction枚举类。调用的是JobStoreSupport中的triggerdJobComplete方法。下面截取部分该方法的代码:

 可以看到该方法根据不同的code值去将trigger的状态值置为不同的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷福。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值