任務排程使用(@EnableScheduling和@Scheduled)和定時任務
阿新 • • 發佈:2022-03-28
一、定時任務
通過配置註解來開啟對定時任務的支援,然後在需要定時執行的方法上面配置註解@Scheduled即可。
二、註解描述
@EnableScheduling:在啟動類中使用該註解,開啟自動掃描功能
@EnableScheduling public class App { public static void main(String[] args) { SpringApplication.run(App.class) } }
@Scheduled:在需要執行的定時方法上新增該註解即可
@Component public class Send{ @Scheduled("cron = "1-10 * * * * *"")public class time{} }
1、fixedDelay和fixedRate,單位是毫秒; 區別:fixedRate---,每多少毫秒執行一次,與具體業務執行時間沒關係;而fixedDelay是當任務執行完畢後按照設定的毫秒值執行任務。所以根據實際業務不同,我們會選擇不同的方式。 2、cron表示式:依據業務需求,可設定具體的任務執行時間,預定時間一到就會自動執行; cron一共有7位,但是最後一位是年,可以留空,一般情況可以寫6位: * 第一位,表示秒,取值0-59 * 第二位,表示分,取值0-59 * 第三位,表示小時,取值0-23 * 第四位,日期天/日,取值1-31 * 第五位,日期月份,取值1-12 * 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二週的意思 另外:1表示星期天,2表示星期一。* 第7為,年份,可以留空,取值1970-2099 3、cron中,還有一些特殊的符號,含義如下: (*)星號:可以理解為每的意思,每秒,每分,每天,每月,每年... (?)問號:問號只能出現在日期和星期這兩個位置。 (-)減號:表達一個範圍,如在小時欄位中使用“10-12”,則表示從10到12點,即10,11,12 (,)逗號:表達一個列表值,如在星期欄位中使用“1,2,4”,則表示星期一,星期二,星期四 (/)斜槓:如:x/y,x是開始值,y是步長,比如在第一位(秒) 0/15就是,從0秒開始,每15秒,最後就是0,15,30,45,60 另:*/y,等同於0/y 4、舉例描述cron:0 0 8 * * ? 每天8點執行 0 30 8 * * ? 每天8點30分執行 0 30 5 ? * * 每天8點30分執行,與上面作用相同,區別特殊符號 0 5/5 8 * * ? 每天8點的 5分,10分,15分,20分,35分,40分,45分,50分,55分這幾個時間點執行 0 30 8 ? * 1 每週星期天,8點30分 執行,注:1表示星期天 0 30 8 ? * 1#3 每個月的第三個星期,星期天執行,#號只能出現在星期的位置
除了cron屬性之外,@Scheduled還有以下的屬性可以配置
zone:取伺服器所在地的時區
fixedDelayString:上一次執行完畢時間點之後多長時間再執行
fixedRate:自專案開始的時候每隔幾秒鐘定時執行
fixedRateString
initialDelay:第一次延遲多長時間後再執行,可以同fixedRate組合使用
initialDelayString
ScheduledExecutorService、開源工具包Quartz,以及Spring和Quartz的結合等內容。
JDK原生定時工具TIMER
連結:https://blog.csdn.net/m0_62714732/article/details/121063214