![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
定时任务
文章平均质量分 66
7仔要加油
再来一杯Java,谢谢
展开
-
定时任务系列(9)-Quartz启动核心原理之错过调度
前面再次查询一次处于WAITING状态的trigger,拿到所有失火的数据再找到trigger,将trigger封住成。这里在获取锁前再查询一次是否有失火的任务,获取锁的开销是很大的,这里的处理尽量避免获取锁。先通知所有的监听失火的监听器,然后修改具体的trigger,再重新将trigger写入数据库。的一个内部类,同集群的初始化方法一样,这里的初始化方法也执行了线程的执行。首先获取misfired的job,根据不同策略设定的调度时间,重新调度任务。,再针对每个Trigger更新下次调度时间。原创 2022-11-15 22:38:58 · 1222 阅读 · 0 评论 -
定时任务系列(8)-Quartz启动核心原理之集群
的初始化方法如上,调用了内部的manage()方法,通过manage方法来检测心跳和故障转移,后使用了配置的线程执行了集群线程。先查询出所有的调度示例,如果是第一次加载,就加载当前实例,如果是之后,就需要判断实例是不是故障,故障判断:触发时间+阈值>当前时间。如果是集群模式,根本不需要考虑失火的问题,多个实例可以不间断调度。第一次启动来调用肯定是没有初始化的,就不用考虑失火的问题,如果是初始化过的,需要考虑失火恢复任务。是基于内存的,不会存在什么需要初始化失火策略的问题,所以默认是不实现的。原创 2022-11-14 23:08:49 · 1523 阅读 · 0 评论 -
定时任务系列(7)-Quartz启动核心原理之JobStoreSupport
如果trigger的job设置为@DisallowConcurrentExecution,并且已经添加到result中,则将其放回timeTriggers集合中,继续寻找下一个trigger。如果存在需要触发的tiggerKey,通过查询tiggerKey查询出需要触发的Trigger。触发器,该触发器将在两个给定时间戳之间按触发时间的升序触发,然后按优先级降序触发。这样,返回accuired状态的trigger,也能获取了一组需要触发的触发器。状态的才能继续执行,将trigger的状态改为执行中。原创 2022-10-30 21:27:52 · 672 阅读 · 0 评论 -
定时任务系列(6)-Quartz启动核心原理之RAMJobStore
是否存在数据,这里是前面绑定触发器后存入的,依次移除第一个,timeTriggers的数据结构是TreeSet是一颗红黑树,所以是有序的树。先判断是否存在更早的触发器,如果存在,需要清除当前trigger,调度更早的trigger。通知所有的监听器,先通知trigger的监听器,再通知任务否决监听器,再通知job的监听器。如果真的存在失火的数据,这里会根据失火的处理策略修改trigger的下次调度时间。遍历前面的封装的trigger,如果在之前存在异常,就将这个trigger的状态由。原创 2022-10-30 21:27:12 · 708 阅读 · 2 评论 -
定时任务系列(5)-Quartz绑定任务和触发器核心原理
首先判断缓存中是否存在key值的数据,如果存在,不允许重复创建相同JobName和JobGroup的任务,报错。注册好触发器后,判断触发器是否是暂停的,并将状态改为暂停;如果是已阻止的,状态改为已阻止。首先看一下jobExists方法,这个查询数据库,看是否已经存在数据。获取JobStore后调用注册的方法,这里我们分两种:内存型。这里获取DB操作的驱动,这里以MySQL为例,实现类为。如果任务存在,则报错。最后,存在就修改数据库的触发器,不存在就新增。类似注册任务,这里包装一个。类似一个包装类,包装了。原创 2022-10-23 16:14:29 · 948 阅读 · 0 评论 -
定时任务系列(4)-Quartz创建Scheduler调度器核心原理
Quartz启动原理所有都起始于,有两个是实现类和。中提供一个的方法,获取一个默认的Scheduler。这里直接new一个StdSchedulerFactory,并调用了方法。原创 2022-10-18 08:29:26 · 1143 阅读 · 0 评论 -
定时任务系列(3)-Quartz动态定时任务
Quartz定时任务框架经常用于系统后台业务异步处理。平常我们使用时,主要是通过手工编写配置代码文件方式添加修改定时任务,然后重启系统。有时候我们需要根据业务运营需要,动态添加修改定时任务,比如添加新的定时任务、修改任务执行时间、暂停定时任务、删除定时任务等,并且监控定时任务状态,而又不想重启系统,这时就需要系统具备动态管理定时任务的功能。Quartz提供了一系列组件,支持动态管理定时任务的功能。原创 2022-10-17 13:33:49 · 2773 阅读 · 0 评论 -
定时任务系列(2)-Quartz初步认识
Quartz是Java定时任务领域一个非常优秀的框架,由OpenSymphony(一个开源组织)开发,这个框架进行了优良地解耦设计原创 2022-10-16 23:06:46 · 508 阅读 · 0 评论 -
定时任务系列(1)-简单定时任务
Timer 类实现定时任务的优点是方便,因为它是 JDK 自定的定时任务,但缺点是任务如果执行时间太长或者是任务执行异常,会影响其他任务调度,所以在生产环境下建议谨慎使用。原创 2022-10-16 20:47:51 · 202 阅读 · 0 评论