要使用@ Scheduled注解,首先需要在啟動類添加@ EnableScheduling,啟用Spring的計劃任務執行功能,這樣可以在容器中的任何Spring管理的bean上檢測@ Scheduled注解,執行計劃任務。
參數
參數說明
示例
cron
任務執行的cron表達式
@ Scheduled(cron="0/1 * * * * ?")
zone
cron表達時解析使用的時區,預設為伺服器的本地時區,使用java.util.TimeZone#getTimeZone(String)方法解析
@ Scheduled(zone =" GMT-8:00")
fixedDelay
上一次任務執行結束到下一次執行開始的間隔時間,機關為ms
@ Scheduled(fixedDelay = 1000 * 60)
fixedDelayString
上一次任務執行結束到下一次執行開始的間隔時間,使用java.time.Duration#parse解析
@ Scheduled(fixedDelayString = "PT15M")
fixedRate
以固定間隔執行任務,即上一次任務執行開始到下一次執行開始的間隔時間,機關為ms,
若在排程任務執行時,上一次任務還未執行完畢,會加入worker隊列,等待上一次執行完成後立即執行下一次任務
@ Scheduled(fixedRate = 2000)
fixedRateString
與fixedRate邏輯一緻,隻是使用java.time.Duration#parse解析
@ Scheduled( fixedRateString="PT15M")
initialDelay
首次任務執行的延遲時間
@ Scheduled(initialDelay = 1000)
initialDelayString
首次任務執行的延遲時間,使用java.time.Duration#parse解析
@ Scheduled(initialDelayString = "PT15M")
cron表達式文法
[秒] [分] [小時] [日] [月] [周] [年]
注:[年]不是必須的域,可以省略[年],則一共6個域
定時任務執行預設是單線程模式,會建立一個本地線程池,線程池大小為1。當項目中有多個定時任務時,任務之間會互相等待,同步執行
源碼
注意:如果是多節點部署伺服器,并且一個定時任務隻需要執行一次的情況下,有兩種方法實作
分布式鎖
指定某一節點執行(此種情況會使多節點部署失去意義)
本文作者:好名字 原文連結:定時任務注解@Scheduled 版權聲明: 本部落格所有文章除特别聲明外,均采用 CC BY 3.0 CN協定進行許可。轉載請署名作者且注明文章出處。