定时任务 @scheduled

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务 @scheduled相关的知识,希望对你有一定的参考价值。

参考技术A SpringBoot为我们内置了@Scheduled定时任务,下面我们就来配置下这个注解,找到入口程序添加注解@EnableScheduling,添加注解后SpringBoot就已经认定了我们要使用定时任务来完成一些业务逻辑了,内部会对应原始配置定时任务添加对应的配置文件

@scheduled注解用来配置到方法上来完成对应的定时任务的配置,如执行时间,间隔时间,延迟时间等等,下面我们就来详细的看下对应的属性配置

下面我们来配置@Scheduled,来完成每小时输出内容

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年

下面简单举几个例子:

"0 0 12 * * ?" 每天中午十二点触发
"0 15 10 ? * *" 每天早上10:15触发
"0 15 10 * * ?" 每天早上10:15触发
"0 15 10 * * ? *" 每天早上10:15触发
"0 15 10 * * ? 2005" 2005年的每天早上10:15触发
"0 * 14 * * ?" 每天从下午2点开始到2点59分每分钟一次触发
"0 0/5 14 * * ?" 每天从下午2点开始到2:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?" 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?" 每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED" 三月的每周三的14:10和14:44触发
"0 15 10 ? * MON-FRI" 每个周一、周二、周三、周四、周五的10:15触发

该属性的含义是指在项目启动后在定义的时间后开启定时任务,配合fixedRate()和fixedDelay()使用

该属性的含义是调用固定周期(以毫秒为单位)执行方法:就是上一次开始执行时间点之后延迟执行

该属性的含义是上次调用结束和下一次调用结束之间的固定周期(以毫秒为单位)执行方法:就是上一次执行完毕时间点之后延迟执行。

1、cron、fixedDelay、fixedRate 三者之间不能共存!!!
2、fixedDelay、fixedRate不能单独使用!!!
会抛出一个错误:

以上是关于定时任务 @scheduled的主要内容,如果未能解决你的问题,请参考以下文章

java的定时任务之--@Scheduled

玩转SpringBoot之定时任务@Scheduled线程池配置-

spring schedule 定时任务

Springboot之使用Scheduled做定时任务

Spring 定时任务Scheduled 开发详细图文

@Schedule定时任务是并行执行吗