@Scheduled cron 定时任务表达式含义,及* ?的区别

好多网友对@Scheduled cron表达式含义做了阐述,个人认为很多对于 * ?的说明不够具体也不算准确,借此本文特别对 * ?做一下说明。

cron格式:【秒数】【分钟】【小时】【日期】【月份】【星期几】【年份(可省略)】

关于【日期】与【星期几】的说明:

1、【日期】与【星期几】两者为互斥的,不能同时设置。这个比较容易理解,假设日期设置为1,星期几也设置为1,那含义是什么:每月1日且为周一时触发,可能一年之中没用任何天能满足上述条件,更重要的是什么人能有这种xx的需求呢?

2、【日期】与【星期几】中任何一个设置值(包含 *),另一个必需使用 ?来进行屏蔽,此时 ?起到屏蔽的作用。

3、?只能出现在【日期】与【星期几】中,且不能同时出现

 

常用表达式符号说明:

* 表示任意值都满足触发条件

,表示列表项目的分割,如 秒数中设置 1,3,17,则表示秒数为1,3,17时满足触发条件

-表示连续的列表范围,如 秒数中设置 1-5,则表示秒数为1到5时,均满足触发条件

/正常的用法为 x/y,x表示触发的起始数值,y表示后续间隔,如 秒数中设置 5/20,则表示从第5秒开始触发,然后每隔20秒再循环触发(25、45,下次循环5、25、45.........)

表达式分析:
10 * * * * ? 每10秒触发任务
10 10 * * * ? 每小时的10分10秒触发任务
10 10 1 * * ? 每天1点10分10秒触发任务
0 0 10,14,18 * * ? 每天10、14、18点触发任务
0 0/20 9-17 * * ? 每天9-17点,20分钟触发任务
0 * 12 * * ? 每天12:00-12:59期间的每1分钟触发
0 0/3 12 * * ? 在每天12:00-12:59期间的每3分钟触发
0 0-5 12 * * ? 在每天12:00-12:05期间的每1分钟触发

10 10 1 12 * ? 每月12号1点10分10秒触发任务
10 10 1 ? * 2 每周1的1点10分10秒触发任务

10 10 1 20 10 ? 2021 2021年10月20号1点10分10秒触发任务
10 10 1 * 10 ? 2021 2021年10月每天1点10分10秒触发任务
10 10 1 ? 10 * 2021 2021年10月每天1点10分10秒触发任务
10 10 1 ? 10 7 2021 2021年10月每周6 1点10分10秒触发任务
 
posted @ 2021-02-03 10:52  DW039  阅读(1685)  评论(0编辑  收藏  举报