@Scheduled注解
1 概述
@Scheduled注解是Spring Boot提供的用于定時(shí)任務(wù)控制的注解,主要用于控制任務(wù)在某個(gè)指定時(shí)間執(zhí)行,或者每隔一段時(shí)間執(zhí)行。注意需要配合@EnableScheduling使用,@Scheduled主要有三種配置執(zhí)行時(shí)間的方式:
cron
fixedRate
fixedDelay
2 cron
cron是@Scheduled的一個(gè)參數(shù),是一個(gè)字符串,以5個(gè)空格隔開,只允許6個(gè)域(注意不是7個(gè),7個(gè)直接會(huì)報(bào)錯(cuò)),分別表示秒、分、時(shí)、日、月、周。
2.1 cron通配符
2.2 cron示例
@Scheduled(cron = "0 * * * 1 SAT") //每年的1月的所有周六的所有0秒時(shí)間執(zhí)行
@Scheduled(cron = "0 0 0 1 Jan ?") //每年的1月的1日的0時(shí)0分0秒執(zhí)行
cron支持占位符,若在配置文件中有
cron = 2 2 2 2 2 ?
則
@Scheduled(cron = "${cron}")
表示每年的二月二號(hào)的兩時(shí)兩分兩秒執(zhí)行。
3 fixedRate
3.1 fixedRate
fixedRate表示自上一次執(zhí)行時(shí)間之后多長(zhǎng)時(shí)間執(zhí)行,以毫秒為單位。
如
@Scheduled(fixedRate = 1000 * 5)
自上次執(zhí)行之后5秒再執(zhí)行。
3.2 fixedRateString
有一個(gè)類似的參數(shù)叫fixedRateString,是字符串的形式,支持占位符。
如
@Scheduled(fixedRateString = "1000")
自上次執(zhí)行1秒再執(zhí)行。
若在配置文件中有相應(yīng)的屬性,可以用占位符獲取屬性,如在application.properties中有
interval=2000
可以使用
@Scheduled(fixedRateStirng="${interval}")
表示2秒間隔。
4 fixedDelay
4.1 fixedDelay
fixedDelay與fixedRate有點(diǎn)類似,不過fixedRate是上一次開始之后計(jì)時(shí),fixedDelay是上一次結(jié)束之后計(jì)時(shí),也就是說,fixedDelay表示上一次執(zhí)行完畢之后多長(zhǎng)時(shí)間執(zhí)行,單位也是毫秒。
@Scheduled(fixedDelay = 1000 * 3600 * 12) //上一次執(zhí)行完畢后半天后再次執(zhí)行
4.2 fixedDelayString
與fixedRateString類似,也是支持占位符
@Scheduled(fixedDelayString = "${fixedDelay}")
5 initialDelay
5.1 initialDelay
initialDelay表示首次延遲多長(zhǎng)時(shí)間后執(zhí)行,單位毫秒,之后按照cron/fixedRate/fixedRateString/fixedDelay/fixedDelayString指定的規(guī)則執(zhí)行,需要指定其中一個(gè)規(guī)則。
@Scheduled(initialDelay=1000,fixedRate=1000) //首次運(yùn)行延遲1s
5.2 initialDelayString
與initialDelay類似,不過是字符串,支持占位符。
@Scheduled(initialDelayString = "${initialDelay}",cron = "0 0 0 14 4 ?") 
//按照配置文件initialDelay指定的時(shí)間首次延遲,并于每年4月14日0時(shí)0分0秒執(zhí)行
總結(jié)
以上是生活随笔為你收集整理的@Scheduled注解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 妖神记手游沈秀怎么样 沈秀技能属性汇总介
- 下一篇: git 工程工作目录下的git相关文件解
