SpringBoot Scheduling定時(shí)任務(wù)的示例代碼
springBoot提供了定時(shí)任務(wù)的支持,通過(guò)注解簡(jiǎn)單快捷,對(duì)于日常定時(shí)任務(wù)可以使用。
開(kāi)啟定時(shí)任務(wù)注解@EnableScheduling
@EnableScheduling @SpringBootApplication public class DockerApplication { public static void main (String[] args) { SpringApplication.run(DockerApplication.class,args); } }
@Scheduled添加定時(shí)任務(wù)
@Component public class Task1 { @Scheduled(cron = "0/1 * * * * ?") public void doTask1(){ System.out.println("doTask1 " +System.currentTimeMillis()); } }
兩步就可實(shí)現(xiàn)定時(shí)任務(wù)。
Cron表達(dá)式
Cron語(yǔ)法格式,共7個(gè)部分(域)組成:
Seconds(秒) Minutes(分鐘) Hours(小時(shí)) DayofMonth(天/幾號(hào)) Month(月) DayofWeek(星期幾) Year(年)
最后年可以不指定,通常用6段表示cron表達(dá)式
每一個(gè)域可出現(xiàn)的字符如下:
- Seconds:可出現(xiàn)", - * /",有效范圍為0-59的整數(shù)
- Minutes:可出現(xiàn)", - * /",有效范圍為0-59的整數(shù)
- Hours:可出現(xiàn)", - * /",有效范圍為0-23的整數(shù)
- DayofMonth(天/幾號(hào)):可出現(xiàn)", - * / ? L W C",有效范圍為0-31的整數(shù)
- Month:可出現(xiàn)", - * /",有效范圍為1-12的整數(shù)
- DayofWeek(星期幾) :可出現(xiàn)", - * / ? L C #",有效范圍為1-7的整數(shù)或SUN-SAT(星期天開(kāi)始)兩個(gè)范圍
- Year:可出現(xiàn)", - * /"
1)每一個(gè)域可能出現(xiàn)如下字符,它們的含義分別是:
*:表示匹配該域的任意值。
?: 只能用在DayofMonth和DayofWeek。DayofMonth和 DayofWeek會(huì)相互影響。設(shè)置其中某一個(gè)值后,為了避免沖突,需要將另一個(gè)的值設(shè)為“?”
-: 表示范圍,在某一個(gè)時(shí)間范圍內(nèi)觸發(fā)一次
/:表示起始時(shí)間開(kāi)始觸發(fā),然后每隔固定時(shí)間觸發(fā)一次
例如在分鐘域里使用5/10,則意味著5分鐘觸發(fā)一次,15,25等分別觸發(fā)一次.
在(分鐘)里的“0/15”,表示從第0分鐘開(kāi)始,每15分鐘觸發(fā)一次
,: 表示多個(gè)
L: last表示最后,
在天/日(月)域中,“L”表示一個(gè)月的最后一天
在天(星期)域中,“L”表示一個(gè)星期的最后一天
L只能出現(xiàn)在DayofWeek和DayofMonth域
W: work表示有效工作日(周一到周五),只能出現(xiàn)在DayofMonth域,系統(tǒng)將在離指定日期的最近的有效工作日觸發(fā)事件。例如:在 DayofMonth使用5W,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發(fā)。如果5日是星期天,則在6日(周一)觸發(fā);如果5日在星期一 到星期五中的一天,則就在5日觸發(fā)。另外,W的最近尋找不會(huì)跨過(guò)月份
LW: 這兩個(gè)字符可以連用,表示在某個(gè)月最后一個(gè)工作日,即最后一個(gè)星期五
#: 用于確定每個(gè)月第幾個(gè)星期幾,例如在4#2,表示某月的第二個(gè)星期三
“C” 表示canlendar,即日歷,例如“1C”在星期域上就是包括日歷上的星期日。基本無(wú)用
2)Cron表達(dá)式例子: 注:dayofweek 和 dayofmouth必須有一個(gè)為?
0 * * * * ? 每1分鐘執(zhí)行一次 0 0 * * * ? 每天每1小時(shí)執(zhí)行一次 0 0 10 * * ? 每天10點(diǎn)執(zhí)行一次 0 * 14 * * ? 在每天下午14點(diǎn)到下午14:59期間的每1分鐘執(zhí)行一次 0 30 10 1 * ? 每月1號(hào)上午10點(diǎn)30執(zhí)行一次 0 10 10 10 * ? 每月10日上午10:10執(zhí)行一次 0/5 * * * * ? 每隔5秒執(zhí)行一次 0 */1 * * * ? 每隔1分鐘執(zhí)行一次 0 0 12-15 * * ? 每天12-15點(diǎn)整點(diǎn)執(zhí)行一次 0 0/5 * * * ? 每5分鐘執(zhí)行一次 0 0-5 15 * * ? 在每天下午15點(diǎn)到下午15:05期間的每1分鐘執(zhí)行一次 0 0/10 15 * * ? 在每天下午15點(diǎn)到下午15:50期間的每10分鐘執(zhí)行一次 0 0/10 15,18 * * ? 在每天下午15點(diǎn)到15:50期間和下午18點(diǎn)到18:50期間的每10分鐘執(zhí)行一次 0 0/30 10-15 * * ? 在每天上午10點(diǎn)到下午15:30每半小時(shí)執(zhí)行一次 0 0 10,12,14 * * ? 每天上午10點(diǎn),下午12點(diǎn),14點(diǎn)執(zhí)行一次
在線cron工具
http://tools.jb51.net/code/Quartz_Cron_create
適應(yīng)場(chǎng)景
Scheduling服務(wù)是單機(jī)任務(wù),當(dāng)使用微服務(wù)一個(gè)服務(wù)開(kāi)啟多個(gè)節(jié)點(diǎn)時(shí),每個(gè)節(jié)點(diǎn)都會(huì)開(kāi)啟同樣的定時(shí)任務(wù),缺乏任務(wù)調(diào)度管理,因此Scheduling不太適合多節(jié)點(diǎn)的微服務(wù)情景。 文章分類
到此這篇關(guān)于SpringBoot Scheduling定時(shí)任務(wù)的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot Scheduling定時(shí)任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot自帶定時(shí)任務(wù)實(shí)現(xiàn)動(dòng)態(tài)配置Cron參數(shù)方式
- springboot定時(shí)任務(wù)@Scheduled執(zhí)行多次的問(wèn)題
- SpringBoot如何實(shí)現(xiàn)定時(shí)任務(wù)示例詳解
- SpringBoot整合定時(shí)任務(wù)之實(shí)現(xiàn)Scheduled注解的過(guò)程(一個(gè)注解全解決)
- SpringBoot實(shí)現(xiàn)quartz定時(shí)任務(wù)可視化管理功能
- SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的三種方式小結(jié)
相關(guān)文章
javax.net.ssl.SSLException: java.lang.RuntimeException: Coul
這篇文章主要介紹了javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 解決方法,有需要的朋友們可以學(xué)習(xí)下。2019-08-08Java?AQS?線程安全同步隊(duì)列的實(shí)現(xiàn)
AQS 同步隊(duì)列是很多的 Java 線程安全對(duì)象的實(shí)現(xiàn),例如 ReentrantLock, Semaphore, CountDownLatch, ReentrantReadWriteLock 等等,本文就介紹了Java?AQS?線程安全同步隊(duì)列的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08Java實(shí)現(xiàn)代碼塊耗時(shí)測(cè)算工具類
這篇文章主要為大家介紹了如何利用Java語(yǔ)言編寫(xiě)一個(gè)工具類,用來(lái)測(cè)算代碼塊的耗時(shí),同時(shí)還能顯示進(jìn)度,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05java如何實(shí)現(xiàn)嵌套對(duì)象轉(zhuǎn)大map(扁平化)
這篇文章主要介紹了java如何實(shí)現(xiàn)嵌套對(duì)象轉(zhuǎn)大map(扁平化),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10