通过Quartz 配置定时调度任务:使用cron表达式配置时间点

Cron官网入口

在后台经常需要一些定时处理的任务,比如微信相关应用所需的access_token,就要定时刷新,官方返回的有效性是7200s,也就是2小时,但是为了保险起见,除了在发现access_token失效后要主动发起请求更新access_token,还需要通过定时器刷新,这样才能最大程度的保障access_token可以不间断使用。

比如下图所示,则会在每小时的0分0秒发起调用:
在这里插入图片描述

cron 表达式必须为6个参数,分别表示 :{秒} {分} {时} {日} {月} {周} {年(可选)}

┌────────────── 秒 (取值范围:0-59)
│ ┌───────────── 分 (取值范围:0-59)
│ │ ┌───────────── 时 (取值范围:0 - 23)
│ │ │ ┌───────────── 日(取值范围:1 - 31)
│ │ │ │ ┌───────────── 月(取值范围:1 - 12)
│ │ │ │ │ ┌───────────── 周(取值:1 - 7) (1是周日,2是周一,以此类推)
│ │ │ │ │ │
│ │ │ │ │ │
* * * * * * 

Cron表达式范例:

表达式 含义
0/1 * * * * ? 每1秒执行一次
10/1 0/1 * * * ? 从10秒整开始每隔1秒每秒执行一次,
如果当前时间的秒数小于10,那么当前分钟的10秒整执行,
否则到下一分钟的10秒整才执行
0 0/1 * * * ? 每分钟0秒整执行一次
0 0 0/1 * * ? 每小时0分0秒执行一次
0 0 1 1-31/1 * ? 每天1点0分0秒执行一次
0 0 0,6,12,18 * * ? 每天的0点整、6点整、12点整、18点整各执行一次
0 0 1-2 1 * ? 每个月1号1点整,2点整各执行一次
0 0 23 L * ? 每个月1最后一天的23点整执行一次

下面让我们简单了解下cron表达式的规则:

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek


每一个域可出现的字符如下:
Seconds:可出现", - * /“四个字符,有效范围为0-59的整数
Minutes:可出现”, - * /“四个字符,有效范围为0-59的整数
Hours:可出现”, - * /“四个字符,有效范围为0-23的整数
DayofMonth:可出现”, - * / ? L W C"八个字符,有效范围为0-31的整数
Month:可出现", - * /“四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek:可出现”, - * / ? L C #“四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year:可出现”, - * /"四个字符,有效范围为1970-2099年

上面有些子表达式能包含一些范围或列表,具体解释如下:

例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

“*”字符代表所有可能的值

因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天


“/”字符用来指定数值的增量 
例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“32343”)的含义一样


“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 
但是它在两个子表达式里的含义是不同的。 
在天(月)子表达式中,“L”表示一个月的最后一天 
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

如果在“L”前有具体的内容,它就具有其他的含义了

例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最后一个星期五 
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

分享一个在线生成cron表达式的网站:
http://cron.qqe2.com/
在这里插入图片描述

原文地址:https://www.cnblogs.com/xiaocy66/p/10589262.html