Quartz Job耗时太久问题

前端时间由于工作需要研究了下QUARTZ这个调度器,在网上看了蛮多的资料,其中说 的最少最不明白的就是关于QUARTZ的有状态和无状态的 JOB,QUARTZ是怎么处理的,网友们基本上都是说有状态的JOB时,当这次任务没有完成,而下次触发的时间又来了时,都认为是挂起,等待,要考虑很 复杂的情况,本人看了QUARTZ的源码的实现方案,现将QUARTZ的实现机制描述如下: 

QUARTZ的有状态的JOB始终只有一个任务在运行,不会出现同一个JOB并发的情况,QUARTZ执行一个JOB时,会判断该JOB是不是有 状态的,如果是有状态的,则把给JOB从存储JOB的列表中移除,保存到另一个集合里,当然要修改该JOB的状态,等到该JOB运行完成时,再把该JOB 从集合里删除,重新加入到JOB列表中,这样的话,QUARTZ就不怕由于这个JOB运行太长的时间,而导致下次运行时间到达时又触发了该JOB,因为该 JOB已经不在JOB列表[b][/b]中了,找不到触发器对应的JOB,只能返回空的JOB ,就直接返回了。不会出现任何的等待挂起问题。假如说一个JOB运行了执行的时间很长,而错过了N次触发,侧等到该JOB运行完,则下次触发的时间是 (N+1)*每次触发的时间。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值