Java定時(shí)器@Scheduled注解的使用方法
1.定時(shí)器@Scheduled簡(jiǎn)介
@Scheduled注解可以用于做定時(shí)任務(wù),再方法上加上@Scheduled注解,可以將這個(gè)方法定義為一個(gè)任務(wù)發(fā)放,可以搭配cron表達(dá)式進(jìn)行任務(wù)的控制。
開(kāi)啟定時(shí)任務(wù)時(shí)在類(lèi)上加注解 @EnableScheduling
2.cron表達(dá)式的用法
1.按順序依次為
秒 分 時(shí) 天 月 周 年 表達(dá)式長(zhǎng)度為6個(gè)或者7個(gè)
cron表達(dá)式是一個(gè)字符串,分為6或7個(gè)域,每?jī)蓚€(gè)域之間用空格分隔,其語(yǔ)法格式為:
“秒域 分域 時(shí)域 日域 月域 周域 年域”
其中,年域可以省略,省略時(shí)表示每年。
1 秒(0~59)
2 分鐘(0~59)
3 小時(shí)(0~23)
4 天(0~31)
5 月(0~11)
6 星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,F(xiàn)RI,SAT)
7.年份(1970-2099)
2.一些符號(hào)的意義
(1)* 表示可以匹配該域的所有值;
例如,"0 0 13 * * ?"表示每天的13點(diǎn)執(zhí)行一次。
(2)?在cron表達(dá)式中必須出現(xiàn)且只能出現(xiàn)1次,用在日域或周域上,表示不確定值、不限制值;
它與*的區(qū)別是,并不能匹配到該域上的所有值,例如指定了3月份每個(gè)周五,那么3月份的周五可能只有4個(gè)值;
例如,"0 0 5 6 * ?"表示每個(gè)月6日5點(diǎn)鐘執(zhí)行而無(wú)論周幾,"0 0 5 ? * 3"表示每個(gè)周三5點(diǎn)鐘執(zhí)行而無(wú)論是幾號(hào)。
(3)- 表示匹配該域上的一個(gè)范圍;
例如,"0 30 9-15 ? * *"表示每天的9:30-15:30每小時(shí)執(zhí)行一次,"0 1-5 * ? * 1"表示每周日每個(gè)小時(shí)的1-5分鐘每分鐘執(zhí)行一次。
(4), 表示枚舉值;
例如,"0 0 8,16,23 ? * 1,7"表示每個(gè)周六日的8點(diǎn)、16點(diǎn)、23點(diǎn)各執(zhí)行一次。
(5)/ 表示起始時(shí)間和間隔時(shí)間;
例如,"0 0 3/5 * * ?"表示每天3點(diǎn)開(kāi)始執(zhí)行,每隔5個(gè)小時(shí)執(zhí)行一次,即3點(diǎn)、8點(diǎn)、13點(diǎn)、18點(diǎn)、23點(diǎn)各執(zhí)行一次,
"*/5 * * * * ?"表示每隔5秒鐘執(zhí)行一次,"0 */1 * * * ?"表示每隔1分鐘執(zhí)行一次。
(6)# 只能用于周域上,#后面的數(shù)字表示第幾周,如果不存在這個(gè)周的值,則不執(zhí)行;
例如,"0 0 0 ? * 5#2"表示每個(gè)月第2個(gè)周四零點(diǎn)執(zhí)行,"15 30 6 ? * 7#5"表示每個(gè)月第5個(gè)周六6:30:15執(zhí)行,如果某個(gè)月不存在第5個(gè)周六,則不執(zhí)行。
(7)L 只能用于日域或周域,用于日域時(shí)表示當(dāng)月最后一天,用于周域如果前面不加數(shù)字表示周六,加數(shù)字表示最后一個(gè)周值;
例如,"0 0 23 L * ?"表示每月最后一天的23點(diǎn)執(zhí)行,"0 0 23 ? * L"表示每周六的23點(diǎn)執(zhí)行,"0 0 23 ? * 3L"表示每月最后一個(gè)周二的23點(diǎn)執(zhí)行。
3.一些常見(jiàn)實(shí)例
4.fixedDelay和fixedRate的使用
---------------------------------------------------------以毫秒為單位---------------------------------------------------------
@Scheduled(fixedDelay = 5000) //上一次任務(wù)執(zhí)行完畢時(shí)間點(diǎn)之后5秒再執(zhí)行 @Scheduled(fixedRate = 5000) //上一次任務(wù)開(kāi)始執(zhí)行時(shí)間點(diǎn)之后5秒再執(zhí)行
總結(jié)
到此這篇關(guān)于Java定時(shí)器@Scheduled注解的使用方法的文章就介紹到這了,更多相關(guān)Java定時(shí)器@Scheduled注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán))
這篇文章主要介紹了Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Java設(shè)計(jì)模塊系列之書(shū)店管理系統(tǒng)單機(jī)版(三)
這篇文章主要為大家詳細(xì)介紹了Java單機(jī)版的書(shū)店管理系統(tǒng)設(shè)計(jì)模塊和思想第三章,感興趣的小伙伴們可以參考一下2016-08-08詳解Java的Hibernate框架中的緩存與二級(jí)緩存
這篇文章主要介紹了Java的Hibernate框架中的緩存與二級(jí)緩存,Hibernate是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-12-12SpringMVC請(qǐng)求的路徑變量里面寫(xiě)正則表達(dá)式的方法
這篇文章主要介紹了SpringMVC請(qǐng)求的路徑變量里面寫(xiě)正則表達(dá)式的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09MyBatis Log 插件無(wú)法顯示SQL語(yǔ)句的原因解析
MyBatis Log是IDEA一款下載量非常高的插件,該插件可以對(duì)控制臺(tái)打印的日志進(jìn)行解析,然后將對(duì)應(yīng)的SQL語(yǔ)句整理并拼接好對(duì)應(yīng)的參數(shù),非常方便。這篇文章給大家介紹MyBatis Log 插件無(wú)法顯示SQL語(yǔ)句的原因,感興趣的朋友跟隨小編一起看看吧2020-09-09鴻蒙HarmonyOS App開(kāi)發(fā)造輪子之自定義圓形圖片組件的實(shí)例代碼
這篇文章主要介紹了鴻蒙HarmonyOS App開(kāi)發(fā)造輪子之自定義圓形圖片組件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01java中如何使用BufferedImage判斷圖像通道順序并轉(zhuǎn)RGB/BGR
這篇文章主要介紹了java中如何BufferedImage判斷圖像通道順序并轉(zhuǎn)RGB/BGR的相關(guān)資料,需要的朋友可以參考下2017-03-03