Spring中的@Scheduled定时任务注解详解
1.注解源码
@Target({<!-- -->ElementType.METHOD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Repeatable(Schedules.class)public @interface Scheduled {<!-- -->String cron() default "";String zone() default "";long fixedDelay() default -1;String fixedDelayString() default "";long fixedRate() default -1;String fixedRateString() default "";long initialDelay() default -1;String initialDelayString() default "";}
2.注解参数
参数 | 说明 | 示例 |
cron | 任务执行的cron表达式 | 0/2 * * * * ? |
zone | cron表达时解析使用的时区,默认为服务器的本地时区。 使用java.util.TimeZone#getTimeZone(String)方法解析 | GMT-8:00 |
fixedRate | 固定速率 上一次任务执行开始到下一次执行开始的间隔时间固定,单位为ms。 若在调度任务执行时,上一次任务还未执行完毕,会加入worker队列,等待上一次执行完成后,马上执行下一次任务 | 1000 |
fixedRateString | 与fixedRate一致,只是间隔时间使用java.time.Duration#parse解析 | 1000或PT1S |
fixedDelay | 固定延迟 上一次任务执行结束到下一次执行开始的间隔时间固定,单位为ms。 | 1000 |
fixedDelayString | 与fixedDelay一致,只是间隔时间使用java.time.Duration#parse解析 | 1000或PT1S |
initialDelay | 首次延迟多长时间后执行,单位ms。 之后按照fixedRate、fixedRateString、fixedDelay、fixedDelayString指定的规则执行,需要指定其中一个规则。 注意:不能和cron一起使用 | 1000 |
initialDelayString | 与initialDelay 一致,只是间隔时间使用java.time.Duration#parse解析 | 1000或PT1S |
3.示例
cron
@Scheduled(cron = "0/2 * * * * ?")
从0秒开始,每隔两秒执行一次。
zone
@Scheduled(cron = "0/2 * * * * ?", zone = "GMT-8:00")
从0秒开始,每隔两秒执行一次。
指定时间使用的时区为东八区。
fixedRate
@Scheduled(fixedRate = 1000)
1秒执行一次,上次执行开始后过1秒执行下一次。若到了1秒后但上次执行还未完成,会加入worker队列,等待上一次执行完成后,马上执行下一次。
fixedRateString
@Scheduled(fixedDelayString = "1000")
@Scheduled(fixedDelayString = "PT1S")
都表示1秒执行一次,上次执行开始后过1秒执行下一次。若到了1秒后但上次执行还未完成,会加入worker队列,等待上一次执行完成后,马上执行下一次。
fixedDelay
@Scheduled(fixedDelay = 1000)
1秒执行一次,上次执行完成后过1秒继续执行下一次。
fixedDelayString
@Scheduled(fixedDelayString = "1000")
@Scheduled(fixedDelayString = "PT1S")
都表示1秒执行一次,上次执行完成后过1秒继续执行下一次。
initialDelay
@Scheduled(initialDelay = 5000, fixedRate = 2000)
首次5秒后执行,后续每隔2秒执行一次(遵循fixedRate 规则)
@Scheduled(initialDelay = 5000, fixedDelay = 2000)
首次5秒后执行,后续每隔2秒执行一次(遵循fixedDelay 规则)
注意:initialDelay、initialDelayString都不能和cron一起使用
initialDelayString
@Scheduled(initialDelayString = "5000", fixedRate = 2000)
首次5秒后执行,后续每隔2秒执行一次(遵循fixedRate 规则)
@Scheduled(initialDelayString = "5000", fixedDelay = 2000)
首次5秒后执行,后续每隔2秒执行一次(遵循fixedDelay 规则)
注意:initialDelay、initialDelayString都不能和cron一起使用
到此这篇关于Spring中的@Scheduled定时任务注解详解的文章就介绍到这了,更多相关@Scheduled定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用java代码获取新浪微博应用的access token代码实例
这篇文章主要介绍了使用java代码获取新浪微博应用的access token实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-05-05
最新评论