Quartz简介
Quartz是一个任务调度框架 可以定时调度任务
使用场景
- 发送生日邮件
- 定时调度任务,比如每天晚上十二点自动调用程序执行扫描数据库表,给一些明细表记录修改插入数据等等
核心 : 任务执行表达式
核心就是写任务执行表达式
- 表达式: 日和周必须有一个是?号
秒 分 试 日 月 周 年
Quartz Cron 表达式支持到七个域
名称 | 是否必须 | 允许值 | 特殊字符 |
---|---|---|---|
秒 | 是 | 0-59 | , - * / |
分 | 是 | 0-59 | , - * / |
时 | 是 | 0-23 | , - * / |
日 | 是 | 1-31 | , - * ? / L W C |
月 | 是 | 1-12 或 JAN-DEC | , - * / |
周 | 是 | 1-7 或 SUN-SAT | , - * ? L C # |
年 | 否 | 空 或 1970-2099 | , - * / |
- ,
逗号是用来在给某个域上指定一个值列表的
- 例如,使用值 0,15,30,45 在秒域上意味着每15秒触发一个 trigger。
-
中划线是 用于指定一个范围。- 在小时域上的 3-8 意味着 “3,4,5,6,7 和 8 点。”
- 域的值不允许回转,所以像 50-10 这样的值是不允许的。
*
星号指的是任意/
斜线指的是频率 用于时间表的递增的- 0/15 0/30 * * * ? 是在整点和半点时每15秒触发 trigger
?
? 号只能用在日和周域上- 因为不能同时指定,所以有一个必须是有?号
L
说明了某域上允许的最后一个值,单词Last
- 只能用在日和周,表示每月或者每周的最后一天
W
表示工作日 单词Work
,星期一到星期五- 它用来指定离指定日的最近的一个平日
- 如果是15W 15号是星期六 那就会在14号星期五执行
C
该字符只在日期和星期字段中使用,代表“Calendar”的意思。它的意思是计划所关联的日期- 如果日期没有被关联,则相当于日历中所有日期。
- 例如5C在日期字段中就相当于日历5日以后的第一天。
- 1C在星期字段中相当于星期日后的第一天。
#
字符仅能用于周域中。它用于指定月份中的第几周的哪一天。- 例如,如果你指定周域的值为 6#3,它意思是某月的第三个周五
- 6=星期五,#3意味着月份中的第三周。
例子
表达式意义
"0 0 12 * *?"
: 每天中午12点触发"0 15 10 ? **"
: 每天上午10:15触发"0 15 10 * *?"
: 每天上午10:15触发"0 15 10 * * ?*"
: 每天上午10:15触发"0 15 10 * * ?2005"
: 2005年的每天上午10:15触发"0 * 14 * *?"
: 在每天下午2点到下午2:59期间的每1分钟触发"0 0/5 14 * *?"
: 在每天下午2点到下午2:55期间的每5分钟触发"0 0/5 14,18 ** ?"
: 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发"0 0-5 14 * *?"
: 在每天下午2点到下午2:05期间的每1分钟触发"0 10,44 14 ? 3WED"
: 每年三月的星期三的下午2:10和2:44触发"0 15 10 ? *MON-FRI"
: 周一至周五的上午10:15触发"0 15 10 15 *?"
: 每月15日上午10:15触发"0 15 10 L *?"
: 每月最后一日的上午10:15触发"0 15 10 ? *6L"
: 每月的最后一个星期五上午10:15触发"0 15 10 ? * 6L2002-2005"
: 2002年至2005年的每月的最后一个星期五上午10:15触发"0 15 10 ? *6#3"
: 每月的第三个星期五上午10:15触发