zoukankan      html  css  js  c++  java
  • @Scheduled注解

    1 概述

    @Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。注意需要配合@EnableScheduling使用,@Scheduled主要有三种配置执行时间的方式:

    • cron
    • fixedRate
    • fixedDelay

    2 cron

    cron@Scheduled的一个参数,是一个字符串,以5个空格隔开,只允许6个域(注意不是7个,7个直接会报错),分别表示秒、分、时、日、月、周。

    在这里插入图片描述

    2.1 cron通配符

    在这里插入图片描述

    2.2 cron示例

    @Scheduled(cron = "0 * * * 1 SAT") //每年的1月的所有周六的所有0秒时间执行
    
    @Scheduled(cron = "0 0 0 1 Jan ?") //每年的1月的1日的0时0分0秒执行
    

    cron支持占位符,若在配置文件中有

    cron = 2 2 2 2 2 ?
    

    @Scheduled(cron = "${cron}")
    

    表示每年的二月二号的两时两分两秒执行。

    3 fixedRate

    3.1 fixedRate

    fixedRate表示自上一次执行时间之后多长时间执行,以毫秒为单位。

    @Scheduled(fixedRate = 1000 * 5)
    

    自上次执行之后5秒再执行。

    3.2 fixedRateString

    有一个类似的参数叫fixedRateString,是字符串的形式,支持占位符。

    @Scheduled(fixedRateString = "1000")
    

    自上次执行1秒再执行。

    若在配置文件中有相应的属性,可以用占位符获取属性,如在application.properties中有

    interval=2000
    

    可以使用

    @Scheduled(fixedRateStirng="${interval}")
    

    表示2秒间隔。

    4 fixedDelay

    4.1 fixedDelay

    fixedDelayfixedRate有点类似,不过fixedRate是上一次开始之后计时,fixedDelay是上一次结束之后计时,也就是说,fixedDelay表示上一次执行完毕之后多长时间执行,单位也是毫秒。

    @Scheduled(fixedDelay = 1000 * 3600 * 12) //上一次执行完毕后半天后再次执行
    

    4.2 fixedDelayString

    fixedRateString类似,也是支持占位符

    @Scheduled(fixedDelayString = "${fixedDelay}")
    

    5 initialDelay

    5.1 initialDelay

    initialDelay表示首次延迟多长时间后执行,单位毫秒,之后按照cron/fixedRate/fixedRateString/fixedDelay/fixedDelayString指定的规则执行,需要指定其中一个规则。

    @Scheduled(initialDelay=1000,fixedRate=1000) //首次运行延迟1s
    

    5.2 initialDelayString

    initialDelay类似,不过是字符串,支持占位符。

    @Scheduled(initialDelayString = "${initialDelay}",cron = "0 0 0 14 4 ?") 
    //按照配置文件initialDelay指定的时间首次延迟,并于每年4月14日0时0分0秒执行
    
  • 相关阅读:
    学点 C 语言(39): 函数 使用函数的代价与内联函数(inline)
    学点 C 语言(35): 函数 递归
    学点 C 语言(34): 函数 关于变量(auto、static、register、extern、volatile、restrict)
    学点 C 语言(37): 函数 常量(const)参数
    带进度的文件复制 回复 "冷风无泪" 的问题
    如何把一个程序中 Edit 中的文本赋给另一个程序的 Edit ? 回复 "Disk_" 的问题
    学点 C 语言(32): 函数 返回值
    博客园电子期刊2011年12月刊发布啦
    上周热点回顾(12.261.1)
    上周热点回顾(1.21.8)
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/12715836.html
Copyright © 2011-2022 走看看