溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

@Scheduled注解

發(fā)布時(shí)間:2020-02-29 12:42:25 來(lái)源:網(wǎng)絡(luò) 閱讀:264 作者:qq5d1070a92e32e 欄目:系統(tǒng)運(yùn)維

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è)空格隔開(kāi),只允許6個(gè)域(注意不是7個(gè),7個(gè)直接會(huì)報(bào)錯(cuò)),分別表示秒,分,時(shí),日,月,周.

單位 允許值 允許通配符
0-59 , - * /
0-59 , - * /
時(shí) 0-23 , - * /
1-31 , - * / ? L W
1-12 或 JAN-DEC(大小寫(xiě)均可) , - * / ?
1-7 或 SUN-SAT(大小寫(xiě)均可) , - * / ? L #

2.1 cron通配符

符號(hào) 含義
* 所有值.在秒字段上表示每秒執(zhí)行,在月字段上表示每月執(zhí)行
? 不指定值,不需要關(guān)系當(dāng)前指定的字段的值,比如每天都執(zhí)行但不需要關(guān)心周幾,就可以把周的字段設(shè)為?
- 區(qū)間,如秒的0-2,表示0秒,1秒,2秒都會(huì)觸發(fā)
, 多個(gè)值,比如在0秒,20秒,25秒觸發(fā),可以把秒的字段設(shè)為0,20,25
/ 遞增觸發(fā),比如秒的字段上設(shè)0/3,從第0秒開(kāi)始,每隔3秒觸發(fā)
L 最后,只允許在日字段或周字段上,在日字段上使用L表示當(dāng)月最后一天,在周字段上使用3L表示該月最后一個(gè)周四
W 只允許用在日字段上,表示距離最近的該日的工作日.工作日指的是周一至周五
# 只允許在周字段上,表示每月的第幾個(gè)周幾,如2#3,每月的第3個(gè)周二

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í)行,以ms為單位.

@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)類似,不過(guò)fixedRate是上一次開(kāi)始之后計(jì)時(shí),fixedDelay是上一次結(jié)束之后計(jì)時(shí),也就是說(shuō),fixedDelay表示上一次執(zhí)行完畢之后多長(zhǎng)時(shí)間執(zhí)行,單位也是ms.

@Scheduled(fixedDelay = 1000 * 3600 * 12) //上一次執(zhí)行完畢后半天后再次執(zhí)行

4.2 fixedDelayString

與fixedRateString類似,也是支持占位符

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

5 initialDelay

5.1 initialDelay

initialDelay表示首次延遲多長(zhǎng)時(shí)間后執(zhí)行,單位ms,之后按照cron/fixedRate/fixedRateString/fixedDelay/fixedDelayString指定的規(guī)則執(zhí)行,需要指定其中一個(gè)規(guī)則.

@Scheduled(initialDelay=1000,fixedRate=1000) //首次運(yùn)行延遲1s

5.2 initialDelayString

與initialDelay類似,不過(guò)是字符串,支持占位符.

@Scheduled(initialDelayString = "${initialDelay}",cron = "0 0 0 14 4 ?") 
//按照配置文件initialDelay指定的時(shí)間首次延遲,并于每年4月14日0時(shí)0分0秒執(zhí)行
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI