Quartz定时任务框架 作者:马育民 • 2021-10-20 08:42 • 阅读:10053 # Quartz Quartz是 定时任务框架,由Java开发,可以用来执行定时任务 可用于 J2SE 和 J2EE 应用中 相当于增强版的 `java.util.Timer` ### Timer 缺点 [JAVA Timer 和 TimerTask 的缺点](https://www.malaoshi.top/show_1IX7GUABJuhE.html "JAVA Timer 和 TimerTask 的缺点") 由于 `Timer` 的缺点, JAVA1.5新增 `ScheduledExecutorService`,处理定时任务 ### ScheduledExecutorService 缺点 `ScheduledExecutorService` 不支持复杂的定时,如:每月第三个星期日发一个邮件,这个定时就需要手动实现,比较复杂 # Quartz优点 - 支持复杂的定时任务,如:每月第三个星期日发一个邮件 - 支持 cron 表达式,可方便实现上面复杂的定时 - 支持集群模式,如:springboot集群(或分布式、或微服务)环境下,任务 **不会重复调度** - 支持任务信息保存到数据库,重启服务器任务信息不会丢失 # 应用场景 ### 超时未支付 火车票购票、电商下订单、电商抢购,下单但未支付,系统在 30 分钟后,判断是否支付,未支付就会取消此次订单 ### 统计 月初、月末,年初、年末生成统计单,消费总额、明细、是否欠款 电信订单 支付宝年度统计 ### 定时发短信 贷款、信用卡 还款日前 n 天发短信 # 概念 [![](/upload/0/0/1IX7G80VLuZS.jpg)](/upload/0/0/1IX7G80VLuZS.jpg) - 任务 Job : 需要执行的任务 - 触发器 Trigger : 指定Job的执行时间,执行间隔,运行次数等。 - 调度器 Scheduler : 将 Trigger触发器 和 Job任务 结合起来 # 相关类 [![](/upload/0/0/1IX7G84tzv5i.jpg)](/upload/0/0/1IX7G84tzv5i.jpg) - 任务 Job : 需要实现 `Job` 接口 - 触发器 Trigger : 自带 `SimpleTrigger` 和 `CronTrigger`,也可以自定义 - 调度器 Scheduler : 自带 `StdSchedulerFactory` 和 `DirectSchedulerFactory` 参考: https://blog.csdn.net/noaman_wgs/article/details/80984873 https://zhuanlan.zhihu.com/p/522284183 https://cloud.tencent.com/developer/article/1630199 原文出处:http://malaoshi.top/show_1IX24g8z7ctg.html