java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @Scheduled定时任务

Spring中的@Scheduled定时任务注解详解

作者:骑个小蜗牛

这篇文章主要介绍了Spring中的@Scheduled定时任务注解详解,要使用@Scheduled注解,首先需要在启动类添加@EnableScheduling,启用Spring的计划任务执行功能,这样可以在容器中的任何Spring管理的bean上检测@Scheduled注解,执行计划任务,需要的朋友可以参考下

1.注解源码

&#64;Target({<!-- -->ElementType.METHOD, ElementType.ANNOTATION_TYPE})&#64;Retention(RetentionPolicy.RUNTIME)&#64;Documented&#64;Repeatable(Schedules.class)public &#64;interface Scheduled {<!-- -->String cron() default &#34;&#34;;String zone() default &#34;&#34;;long fixedDelay() default -1;String fixedDelayString() default &#34;&#34;;long fixedRate() default -1;String fixedRateString() default &#34;&#34;;long initialDelay() default -1;String initialDelayString() default &#34;&#34;;}

2.注解参数

参数说明示例
cron任务执行的cron表达式0/2 * * * * ?
zonecron表达时解析使用的时区,默认为服务器的本地时区。
使用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定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文