先给示例
|
|
官网文档
Task Execution and Scheduling :: Spring Framework
Scheduled 参数详情
cron
Cron表达式是由Brian Kernighan和Vixie Cron的创始人之一,Ken Thompson在1975年创建的。Cron表达式是一种用于指定计划任务的语法,它由6个字段组成,分别表示分钟、小时、日、月、星期和要运行的命令。这种语法已经成为Unix和类Unix操作系统中最常用的计划任务语法之一。
@Scheduled(cron ="0 0 0 * * * ?") 一个 cron 表达式有至少6个(也可能7个)有空格分隔的时间元素
| 序号 | 含义 | 是否必填 | 入参范围 | 可填通配符 |
|---|---|---|---|---|
| 1 | 秒 | 是 | 0~59 | , - * / |
| 2 | 分 | 是 | 0~59 | , - * / |
| 3 | 时 | 是 | 0~23 | , - * / |
| 4 | 日 | 是 | 1~31 | , - * ? / L W |
| 5 | 月 | 是 | 1~12 | , - * / |
| 6 | 周(周一 ~ 周日) | 是 | 1~7 1为SUN-依次为SUN,MON,TUE,WED,THU,FRI,SAT | , - * ? / L # |
| 8 | 年 | 否 | 1970~2099 | , - * / |
*:字符代表所有可能的值 /:字符用来指定数值的增量 例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样 ?:字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” L:字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 如果在“L”前有具体的内容,它就具有其他的含义了。例如:“6L”表示这个月的倒数第6天 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题 W:代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。 大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。 C:代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。
例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。
#:第几个。 (cron=“* * * ? * 5#2”)表示每个月的第 2 个周四(5表示周四)
zone
zone能够指定获取的时区,默认是空,表示使用服务器所在时区,比如Asia/BeiJingi或者Asia/Shanghai。
fixedDelay
fixedDelay表示上次调用结束后与下次调用之间的固定时间,单位是毫秒。
@Scheduled(fixedDelay= 3000) 表示距离上次调用后三秒再执行
fixedDelayString
fixedDelayString与fixedDelay是几乎一样的,唯一的差异是fixedDelayString是支持占位符的。
fixedRate
fixedRate表示多久执行一次,单位是毫秒。与cron的/通配符用法相似;
@Scheduled(fixedRate= 3000) 表示每三秒执行一次
fixedRateString
fixedRate的升级,支持占位符
initialDelay
表示第一次延迟多少毫秒执行,单位是毫秒
@Scheduled(initialDelay= 3000) 表示第一次执行时,延迟3秒执行
initialDelayString
initialDelay的升级,支持占位符。
参考
Task Execution and Scheduling :: Spring Framework
cron表达式以及定时任务的简单使用_cron表达式工作日执行_迷你比特位的博客-CSDN博客