scheduler 學習總結

2022-09-02 16:36:10 字數 2297 閱讀 2433

只適合處理簡單的計畫任務,不能處理分布式計畫任務。

優勢:是spring框架提供的計畫任務,開發簡單,執行效率比較高。且在計畫任務數量太多的時候,可能出現阻塞,崩潰,延遲啟動等問題。

scheduled定時任務是spring3.0版本之後自帶的乙個定時任務。其所屬spring的資源包為:spring-context-support。

所以需要使用scheduled定時任務機制時,需要在工程中依賴對應資源,具體如下:

org.springframework

spring-context-support

如果在spring應用中需要啟用scheduled定時任務,則需要在啟動類上增加註解@enablescheduling,代表啟用scheduled定時任務機制。具體如下:

@enablescheduling

publicpublicstaticvoidmain(string args) catch

(exception e)}}

scheduled定時任務的核心在於註解@scheduled,這個註解的核心屬性是cron,代表定時任務的觸發計畫表示式。

這個表示式的格式為:@scheduled(cron="seconds minutes hours day month week") 

或@scheduled(cron="seconds minutes hours day month week year")

推薦使用第一種表示式形式,因為在很多其他技術中都有不同的定時任務機制,其中用於設定觸發計畫的表示式都是第一種cron表示式。

第二種表示式不能說是spring scheduled特有的,也是只有少數技術支援的。

cron表示式中,每個位置的約束如下:

位置時間網域名稱

允許值允許的特殊字元

秒0-59

分鐘0-59

小時0-23

日1-31

, - * / l w c

月1-12

星期1-7

, - * ? / l c #

年(可選)

1970-2099

不使用符號:如(core="2 * * * * ?")表示每分鐘的第二秒執行

星號(*):可用在所有欄位中,表示對應時間域的每乙個時刻,例如,*在分鐘欄位時,表示「每分鐘」;如(core="* * * * * ?")表示每秒執行一次

問號(?):該字元只在日期和星期欄位中使用,它通常指定為「無意義的值」,相當於佔位符;

減號(-):表達乙個範圍,如在小時欄位中使用「10-12」,則表示從10到12點,即10,11,12;

逗號(,):表達乙個列表值,如在星期欄位中使用「mon,wed,fri」,則表示星期一,星期三和星期五;

斜槓(/):x/y表達乙個等步長序列,x為起始值,y為增量步長值。如在秒數字段中使用0/15,則表示為0,15,30和45秒,

而5/15在分鐘欄位中表示5,20,35,50,你也可以使用*/y,它等同於0/y;

以上常用

l:該字元只在日期和星期欄位中使用,代表「last」的意思,但它在兩個欄位中意思不同。

l在日期欄位中,表示這個月份的最後一天,如一月的31號,非閏年二月的28號;

如果l用在星期中,則表示星期六,等同於7。

但是,如果l出現在星期欄位裡,而且在前面有乙個數值x,則表示「這個月的最後x天」,例如,6l表示該月的最後星期五;

w:該字元只能出現在日期欄位裡,是對前導日期的修飾,表示離該日期最近的工作日。

例如15w表示離該月15號最近的工作日,如果該月15號是星期六,則匹配14號星期五;

如果15日是星期日,則匹配16號星期一;如果15號是星期二,那結果就是15號星期二。

但必須注意關聯的匹配日期不能夠跨月,如你指定1w,如果1號是星期六,結果匹配的是3號星期一,而非上個月最後的那天。w字串只能指定單一日期,而不能指定日期範圍;

lw組合:在日期字段可以組合使用lw,它的意思是當月的最後乙個工作日;

井號(#):該字元只能在星期欄位中使用,表示當月某個工作日。如6#3表示當月的第三個星期五(6表示星期五,#3表示當前的第三個),

而4#5表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發;

c:該字元只在日期和星期欄位中使用,代表「calendar」的意思。它的意思是計畫所關聯的日期,如果日期沒有被關聯,則相當於日曆中所有日期。

例如5c在日期欄位中就相當於日曆5日以後的第一天。1c在星期欄位中相當於星期日後的第一天。

cron表示式對特殊字元的大小寫不敏感,對代表星期的縮寫英文大小寫也不敏感。

SCHEDULER使用詳解

scheduler使用詳解 建立scheduler begin sys.dbms scheduler.create schedule repeat interval freq daily byhour 15 byminute 0 bysecond 0 start date systimestamp ...

spring boot的Scheduler定時任務

configuration enablescheduling 開啟後台任務 public class scheduler cron second,minute,hour,day of month,month,day s of week scheduled cron 0 每分鐘執行一次 schedul...

scheduler與job的異同

scheduler 可以由時間觸發,也可以由時間觸發。job 只有前者。簡單的scheduler 由3部分組成,job name,program name,scheduler name。可以隨意更換。job 的job id由系統生成,沒有program name,執行時間由 next date 和 ...