@Scheduled(cron = “* * * * * * *“ )详解
Spring Framework 对于定时任务提供了支持,下面来对@Scheduled定时器介绍一下。
想要使用@Scheduled定时器,首先需要在启动类前添加@EnableScheduling注解,从而启动定时器。
@Scheduled一共有8中配置,参数如下:
参数 | 参数说明 | 示例 |
cron | cron表达式是一个字符串,常用于各种定时任务解决方案 | cron ="0/30 * * * * ?" |
zone | zone用来解析cron表达式中的时区,默认取服务器所在时区。 | GMT-12:00 |
fixedDelay | 上一次执行完毕时间点到下一次执行开始时间点之间的时间,单位:毫秒 | 5000 |
fixedDelayString | 上一次执行完毕时间点到下一次执行开始时间点之间的时间,使用字符串的形式 | "5000" |
fixedRate | 上一次执行开始时间点经过多长时间再次执行,单位:毫秒 | 5000 |
fixedRateString | 上一次执行开始时间点经过多长时间再次执行,使用字符串的形式 | "5000" |
initialDelay | 第一次执行任务前延误时间,单位:毫秒 | 2000 |
initialDelayString | 第一次执行任务前延误时间,使用字符串的形式 | "2000" |
cron表达式
1、cron表达式格式
{秒} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
2、cron表达式占位符解释
{秒} {分钟}:允许范围:0-59,不允许为空值。
如果值不合法,会抛出SchedulerException异常
【注】
"*":代表每隔1秒钟触发
",":代表在指定的秒数触发,例如,"1,5,20"表示1秒,5秒和20秒时触发
"-":代表在指定的范围内触发,例如,"15-20"表示从15秒开始触发到20秒结束触发,每隔1秒触发1次。
"/":代表指定数值的增量触发,例如,在秒域中使用"10/15"表示每分钟内第10秒触发,后续每隔15秒触发一次。注意:这种间隔循环只在每分钟内执行,所以在第55秒执行一次后,中断每15秒的间隔循环,等到下一分钟的第10秒再次开始执行。
{小时}:允许值范围:0-23,不允许为空值
如果值不合法,会抛出SchedulerException异常,占位符和秒数一样。
{日期}:允许值范围:1-31,不允许为空值
如果值不合法,会抛出SchedulerException异常。
{星期}:允许值范围:1-7,1代表星期天,一个星期的第一天,不允许为空值
如果值不合法,会抛出SchedulerException异常。
{年份}:允许值范围:1970-2099,允许为空
如果值不合法,会抛出SchedulerException异常。
【注】由于{日期}和{星期}互斥,所以其中之一被定值以后,必须对另一个设"?"
3、例子
"30 * * * * ?" 每半分钟触发一次
"30 10 * * * ?" 每小时的10分30秒触发任务
"30 10 1 * * ?" 每天的1点10分30秒触发任务
"0 0 10,14,16 * * ?" 每天的10点、14点和16点触发任务
“0 */1 * * * ?” 每一分钟执行一次任务
摘自链接:https://blog.csdn.net/qq_41278110/article/details/120666994
本文来自博客园,作者:无法运行,转载请注明原文链接:https://www.cnblogs.com/guoziqi/p/16106853.html