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

 更新时间:2023年09月25日 09:30:48   作者:骑个小蜗牛  
这篇文章主要介绍了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定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入探究如何使用Java编写MapReduce程序

    深入探究如何使用Java编写MapReduce程序

    MapReduce是一种用于处理大规模数据集的并行编程模型,其特点高效性和可扩展性,在本文中,我们将深入了解MapReduce,并使用Java编写一个简单的MapReduce程序,需要的朋友可以参考下
    2023-05-05
  • Spring  ApplicationContextAware 接口的作用及使用方式

    Spring  ApplicationContextAware 接口的作用及使用方式

    Spring提供了许多回调接口,用于Bean生命周期中执行特定的操作,通过实现ApplicationContextAware接口,Spring提供了一种便捷的方式让 Bean获取对Spring容器的引用,本文介绍ApplicationContextAware接口的作用、使用方式,以及在实际应用中的常见场景,感兴趣的朋友一起看看吧
    2024-01-01
  • SQL返回Map集合或者对象的操作

    SQL返回Map集合或者对象的操作

    这篇文章主要介绍了SQL返回Map集合或者对象的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot的@Scheduled和@Schedules区别小结

    SpringBoot的@Scheduled和@Schedules区别小结

    本文主要介绍了SpringBoot的@Scheduled和@Schedules区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Java中的八种基本数据类型详解

    Java中的八种基本数据类型详解

    本文详细讲解了Java中的八种基本数据类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • MyEclipse+Tomcat配置详解(图文)

    MyEclipse+Tomcat配置详解(图文)

    这篇文章主要介绍了MyEclipse+Tomcat配置详解(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Java调取创蓝253短信验证码的实现代码

    Java调取创蓝253短信验证码的实现代码

    这篇文章主要介绍了Java调取创蓝253短信验证码的实现代码,需要的朋友可以参考下
    2018-04-04
  • logback自定义日志与Nacos日志冲突问题

    logback自定义日志与Nacos日志冲突问题

    这篇文章主要介绍了logback自定义日志与Nacos日志冲突问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MyBatis Spring集成完全指南(史上最全)

    MyBatis Spring集成完全指南(史上最全)

    MyBatis-Spring是一个库,用于无缝集成MyBatis和Spring框架,实现事务管理、自动创建Mapper和SqlSession、异常转换等功能,本文给大家介绍MyBatis Spring集成完全指南,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • Spring Bean的8种加载方式总结

    Spring Bean的8种加载方式总结

    以前学习Spring框架的时候,总结了几种Bean的加载方式,不过老师说还有其它的加载方式,以下八种并不是全部,但也足以用来做很多事情了,希望对大家有所帮助
    2022-10-10

最新评论