Java定时器@Scheduled注解的使用方法

 更新时间:2023年07月20日 09:22:16   作者:mayupi  
这篇文章主要给大家介绍了关于Java定时器@Scheduled注解的使用方法,在Java中使用@Scheduled注解可以方便地实现定时任务的功能,文中介绍的非常详细,需要的朋友可以参考下

1.定时器@Scheduled简介

@Scheduled注解可以用于做定时任务,再方法上加上@Scheduled注解,可以将这个方法定义为一个任务发放,可以搭配cron表达式进行任务的控制。

开启定时任务时在类上加注解 @EnableScheduling

2.cron表达式的用法

1.按顺序依次为

秒 分 时 天 月 周 年 表达式长度为6个或者7个

cron表达式是一个字符串,分为6或7个域,每两个域之间用空格分隔,其语法格式为:

“秒域 分域 时域 日域 月域 周域 年域”

其中,年域可以省略,省略时表示每年。

1 秒(0~59)
2 分钟(0~59)
3 小时(0~23)
4 天(0~31)
5 月(0~11)
6 星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
7.年份(1970-2099)

2.一些符号的意义

(1)* 表示可以匹配该域的所有值;

例如,"0 0 13 * * ?"表示每天的13点执行一次。

(2)?在cron表达式中必须出现且只能出现1次,用在日域或周域上,表示不确定值、不限制值;

它与*的区别是,并不能匹配到该域上的所有值,例如指定了3月份每个周五,那么3月份的周五可能只有4个值;

例如,"0 0 5 6 * ?"表示每个月6日5点钟执行而无论周几,"0 0 5 ? * 3"表示每个周三5点钟执行而无论是几号。

(3)- 表示匹配该域上的一个范围;

例如,"0 30 9-15 ? * *"表示每天的9:30-15:30每小时执行一次,"0 1-5 * ? * 1"表示每周日每个小时的1-5分钟每分钟执行一次。

(4), 表示枚举值;

例如,"0 0 8,16,23 ? * 1,7"表示每个周六日的8点、16点、23点各执行一次。

(5)/ 表示起始时间和间隔时间;

例如,"0 0 3/5 * * ?"表示每天3点开始执行,每隔5个小时执行一次,即3点、8点、13点、18点、23点各执行一次,

"*/5 * * * * ?"表示每隔5秒钟执行一次,"0 */1 * * * ?"表示每隔1分钟执行一次。

(6)# 只能用于周域上,#后面的数字表示第几周,如果不存在这个周的值,则不执行;

例如,"0 0 0 ? * 5#2"表示每个月第2个周四零点执行,"15 30 6 ? * 7#5"表示每个月第5个周六6:30:15执行,如果某个月不存在第5个周六,则不执行。

(7)L 只能用于日域或周域,用于日域时表示当月最后一天,用于周域如果前面不加数字表示周六,加数字表示最后一个周值;

例如,"0 0 23 L * ?"表示每月最后一天的23点执行,"0 0 23 ? * L"表示每周六的23点执行,"0 0 23 ? * 3L"表示每月最后一个周二的23点执行。

3.一些常见实例

4.fixedDelay和fixedRate的使用

---------------------------------------------------------以毫秒为单位---------------------------------------------------------

@Scheduled(fixedDelay = 5000) //上一次任务执行完毕时间点之后5秒再执行
@Scheduled(fixedRate = 5000) //上一次任务开始执行时间点之后5秒再执行

总结

到此这篇关于Java定时器@Scheduled注解的使用方法的文章就介绍到这了,更多相关Java定时器@Scheduled注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java JMH常见的基准测试场景代码实例解读

    Java JMH常见的基准测试场景代码实例解读

    本文介绍Java JMH性能测试框架,涵盖方法比较、参数影响、吞吐量及多线程测试场景,通过@Benchmark、@State、@Param等注解定义基准,结合预热和优化处理确保测试结果准确可靠
    2025-08-08
  • Java毕业设计实战之仿小米电子产品售卖商城系统的实现

    Java毕业设计实战之仿小米电子产品售卖商城系统的实现

    这是一个使用了java+SpringBoot+Vue+MySQL+Redis+ElementUI开发的仿小米商城系统,是一个毕业设计的实战练习,具有小米商城该有的所有基础功能,感兴趣的朋友快来看看吧
    2022-01-01
  • Java数组添加元素的两种方法

    Java数组添加元素的两种方法

    这篇文章主要介绍了Java数组添加元素的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友跟着小编来一起学习学习吧
    2023-04-04
  • OpenFeign无法远程调用问题及解决

    OpenFeign无法远程调用问题及解决

    文章介绍了在使用Feign客户端时遇到的读超时问题,并分析了原因是系统启动时未先加载Nacos配置,为了解决这个问题,建议将Nacos配置放在`bootstrap.yml`文件中,以便项目启动时优先加载Nacos配置
    2024-11-11
  • Java中的线程安全问题详细解析

    Java中的线程安全问题详细解析

    这篇文章主要介绍了Java中的线程安全问题详细解析,线程安全是如果有多个线程在同时运行,而这些线程可能会同时运行这段代码,程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,此时我们就称之为是线程安全的,需要的朋友可以参考下
    2023-11-11
  • IDEA下使用MyBatisCodeHelper插件的方法详解

    IDEA下使用MyBatisCodeHelper插件的方法详解

    这篇文章主要介绍了IDEA下使用MyBatisCodeHelper插件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot之使用Feign实现微服务间的交互

    SpringBoot之使用Feign实现微服务间的交互

    这篇文章主要介绍了SpringBoot中使用Feign实现微服务间的交互,对微服务这方面感兴趣的小伙伴可以参考阅读本文
    2023-03-03
  • Java按照List内存储的对象的某个字段进行排序的实例

    Java按照List内存储的对象的某个字段进行排序的实例

    下面小编就为大家带来一篇Java按照List内存储的对象的某个字段进行排序的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 使用@value注解取不到application.xml配置文件中的值问题

    使用@value注解取不到application.xml配置文件中的值问题

    这篇文章主要介绍了使用@value注解取不到application.xml配置文件中的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring Boot Mybatis++ 2025详解

    Spring Boot Mybatis++ 2025详解

    文章介绍了三种基于注解SQL和查询接口的MyBatis使用方式,讨论了Entity和Example的区别,即Entity会更新所有字段,而Example仅更新非空字段,感兴趣的朋友一起看看吧
    2025-02-02

最新评论