天天看點

定時任務注解@Scheduled

要使用@ 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協定進行許可。轉載請署名作者且注明文章出處。