@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秒触发任务
 

作者:DW039
出处:http://www.cnblogs.com/dw039
本文由DW039原创并发布于博客园,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/dw039/p/14365803.html