前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Quartz的定时任务及crond表达式入门学习

基于Quartz的定时任务及crond表达式入门学习

作者头像
全栈工程师修炼指南
发布2020-10-23 15:34:51
7070
发布2020-10-23 15:34:51
举报
文章被收录于专栏:全栈工程师修炼之路

[TOC]

0x00 前言
0x01 基础语法

Java中Quartz Cron表达式(Cron Expressions—Cron 表达式)被用来配置CronTrigger实例,需要注意一点它不同于Linux中Cron表达式,我们从下面的格式可以看出区别;

Cron表达式是一个由7个子表达式组成的字符串, 每个子表达式都描述了一个单独的日程细节并且采用空格分隔;

代码语言:javascript
复制
#Linux crond
分钟 小时 天 月 周 Command
*    *    *  *  * 命令执行

#Quartz Cron
* * * * * * ? 
秒(0~59)
分钟(0~59)
小时(0~23)
天(月)(0~31,但是你需要考虑你月的天数)
月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970-2099)

PS:从上面的比对中可以看出Quartz的Cron表达式比Linux中的Cron表达式更为强大和精细;

特殊字符含义:

代码语言:javascript
复制
, : 其表示一个列表如(9,10,11,12)
- : 其表示一个连续的区间如(9-12) , 例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT” ;
* : 其表示一个通配符即 “*”字符代表所有可能的值 
/ : 其表示一个指定数值的增量,如一个间隔时间(8-18/4)(/表示每隔4小时),在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ;
? : 其字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值, 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” 
L : 字符仅被用于天(月-最后一天)和天(星期-最后一周)两个子表达式,它是单词“last”的缩写, 但是它在两个子表达式里的含义是不同的。  例如:“6L”表示这个月的倒数第6天,FRIL表示这个月的最一个星期五;

基础示例:

代码语言:javascript
复制
#示例1.每天上午10点,下午14点,16点触发执行
0 0 10,14,16 * * ?

#示例2.朝九晚五工作时间内每半小时
0 0/30 9-17 * * ?


#示例3.由于"月份中的日期 天(月)"和"星期中的日期-天(星期)"这两个元素互斥的,必须要对其中一个设置?. 
0 0 12 ? * WED  #表示每个星期三中午12点

注意事项:

  • 1.在使用“L”参数时,不要指定列表或范围,因为这会导致问题
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 基础语法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档