只適合處理簡單的計畫任務,不能處理分布式計畫任務。
優勢:是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 和 ...