前言

@Scheduled 注解 是 spring自带的一个便捷的定时器功能。本文主要介绍该方法的几个常用参数。

fixedRate

每隔N毫秒执行一次方法:

 @Scheduled(fixedRate = 5000)public void reportCurrentTime() throws InterruptedException {TimeUnit.SECONDS.sleep(1L);log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}

fixedDelay

方法执行完 N毫秒后执行下一次

    @Scheduled(fixedDelay = 5000)public void reportCurrentTime() throws InterruptedException {TimeUnit.SECONDS.sleep(1L);log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}

initialDelay

过N毫秒开始执行方法

    @Scheduled(initialDelay = 5000, fixedDelay = 10000)public void reportCurrentTime() throws InterruptedException {TimeUnit.SECONDS.sleep(1L);log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}


初始化后 5s开始执行方法体,sleep休眠1s,所以6s后打印第一条日志。
执行完方法体后fixedDelay 10s, sleep 1s,打印第二条日志。

cron

cron和linux下的 crontab语法是一致的~ 例如每分钟的第 30 秒执行一次:

    @Scheduled(cron = "30 * * * * ?")public void reportCurrentTime() {log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}


字符串表达式由6个或者7个元素构成。 其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示8到18点区间每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,如果其中一个有设置值则必须要对另一个设置?.

字段 允许值 允许的特殊字符
0-59 - * /
0-59 - * /
小时 0-23 - * /
日期 1-31 - * ? / L W C
月份 1-12 或者 JAN-DEC - * /
星期 1-7 或者 SUN-SAT - * ? / L C #
年(可选) 留空, 1970-2099 - * /

需要特别注意星期里的1是星期天!

特殊字符 含义 案例
- 字符代表区间 子表达式(秒)0-10 代表每分钟的前10秒
* 字符代表所有可能的值
/ 字符用来指定数值的增量 在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值,当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
L 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 子表达式(日期)“6L”表示这个月的倒数第6天
W 字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。 日域中的 15W 意味着 “离该月15号的最近一个平日。” 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。
C 代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。 5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。
# 代表的第几个星期 例如1#3 代表的是第三个星期一。

案例:

  • 特定值0 0 7 * * ? 每天上午7点
  • 区间值0 * 7-8 * * ? 每天上午7点到8点的每个0秒时 即 7-8点每分钟
  • 范围值0 0 7,8,9 * * ? 每天的上午7,8,9整点
  • 增量0 0/5 14 * * ? 在每天下午2点到下午3点期间每5分钟触发 不包括3点
  • L last: 0 15 10 L * ? 每月最后一日的上午10:15触发
    0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
    0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
  • #: 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

参考文献

https://blog.csdn.net/qq_33556185/article/details/51852537
cron 部分是对原文的补充和整理。

Spring @Scheduled详解相关推荐

  1. Spring AOP详解(转载)所需要的包

    上一篇文章中,<Spring Aop详解(转载)>里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包. 截图如下: 在主测试类里面,有人怀疑 ...

  2. Spring JDBC详解

    <Spring JDBC详解> 本文旨在讲述Spring JDBC模块的用法.Spring JDBC模块是Spring框架的基础模块之一. 一.概述 在Spring JDBC模块中,所有的 ...

  3. Spring 体系结构详解

    Spring 体系结构详解 核心容器(Core Container) Core和Beans模块提供了Spring最基础的功能,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对 ...

  4. [转载]Spring配置文件详解一:

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Spring配置文件详解一:<context:annotation-config/>与<conte ...

  5. struts2+hibernate+spring配置详解

    #struts2+hibernate+spring配置详解 struts2+hibernate+spring配置详解 哎 ,当初一个人做好难,现在终于弄好了,希望自学这个的能少走些弯路. 以下是自己配 ...

  6. spring注解详解与用法(总览)

    这篇文章收集了我写的所有的spring注解的详细说明与用法,点击可以跳转到对应文章,此文章会不断更新 spring注解详解与用法(1)最基础也是最常见的如下所示,详情点击这里 @Controller/ ...

  7. Spring入门详解

    typora-copy-images-to: upload Spring入门详解 Spring框架是Java开发中最常用的框架,功能非常强大 源码下载:Spring Framework jar包.文档 ...

  8. Spring IoC详解

    Spring IoC详解 原文地址:Spring IoC详解 写在最前 本文将主要写Spring最核心的部分,为什么写这篇的原因也是因为在刚开始学习Spring的时候,学得太粗糙了.感觉学了个皮毛,从 ...

  9. Spring源码(八):Spring事务详解

    Spring事务详解 一.事务执行流程 二.Spring事务切面 三.事务切面的Pointcut和Advice 四.注解事务的源码分析 五.Sping事务的传播属性 六.Sping事务的异常校验 七. ...

最新文章

  1. Vmware vSphere 5.0安装和配置
  2. AWS — AWS CloudFormation
  3. php 3d animation,css3D+动画的例子(附完整代码)
  4. vs增量链接、清单文件
  5. CSS每日学习笔记(2)
  6. 人工蜂群算法python_教程 | 用人工蜂群算法求解k-分区聚类问题
  7. BZOJ 1191 [HNOI2006]超级英雄Hero
  8. 古典人物海报设计PSD分层模板,浓郁国风,展古典韵味
  9. Blend_技巧篇_淡入淡出
  10. 模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍
  11. VS2019 + Qt ERROR MSB4181 QtRunwork 返回了false,但未记录错误
  12. oracle负数,oracle取交集_oracle取负数_oracle case when
  13. 计算机ping使用的端口,ping 端口:Ping端口命令的使用方法介绍
  14. Word 一件删除所有空格
  15. linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装
  16. js实现判断输入内容是否为数字
  17. 日本国家旅游局的新版《日本本土风情导览》主打人迹罕至的名胜、劲酷的景点以及鲜为人知的攻略
  18. 历代华为Mate系列主要参数对比,更新于2020年11月
  19. 七骑士android版上线时间,七骑士新版本登场 开启征服樱之国度旅程
  20. A记录和CNAME记录——【网络】

热门文章

  1. matlab根据数值画等高线,关于matlab画等高线图
  2. adjtimex简介
  3. git pull和git pull -- rebase
  4. 经典按键java手机游戏跑酷,快来收藏!
  5. php小蛋白奶粉有哪些牌子,含乳铁蛋白的奶粉有哪些牌子?宝妈们需要知道这些挑选标准...
  6. 笔记:部署Sharding-Proxy4.1.1时遇到的坑(持续更新中。。。)
  7. mouse rat web net log wood alligator  crocodile  区别
  8. 台式机接收器此计算机已被连接限制,台式机使用无线接收器上不了网如何解决...
  9. python从一加到100_让我来解释使用循环将1加到了100
  10. ThingMap一键城市2.0重新出发:快速生成三维城市