java 定時任務之——cron表示式詳解
在介紹cron表示式詳解之前如果需要了解@Scheduled註解配置的可以點這裡
Cron表示式是一個字串,字串以5或6個空格隔開,分為6或7個域,每一個域代表一個含義,Cron有如下兩種語法格式:
(1) Seconds Minutes Hours DayofMonth Month DayofWeek Year
(2)Seconds Minutes Hours DayofMonth Month DayofWeek
一、結構
corn從左到右(用空格隔開):秒 分 小時 月份中的日期 月份 星期中的日期 年份
二、各欄位的含義
欄位 | 允許值 | 允許的特殊字元 |
秒(Seconds) | 0~59的整數 | , - * / 四個字元 |
分(Minutes) | 0~59的整數 | , - * / 四個字元 |
小時(Hours) | 0~23的整數 | , - * / 四個字元 |
日期(DayofMonth) | 1~31的整數(但是你需要考慮你月的天數) | ,- * ? / L W C 八個字元 |
月份(Month) | 1~12的整數或者 JAN-DEC | , - * / 四個字元 |
星期(DayofWeek) | 1~7的整數或者 SUN-SAT (1=SUN) | , - * ? / L C # 八個字元 |
年(可選,留空)(Year) | 1970~2099 | , - * / 四個字元 |
注意事項:
每一個域都使用數字,但還可以出現如下特殊字元,它們的含義是:
(1)*:表示匹配該域的任意值。假如在Minutes域使用*, 即表示每分鐘都會觸發事件。
(2)?:只能用在DayofMonth和DayofWeek兩個域。它也匹配域的任意值,但實際不會。因為DayofMonth和DayofWeek會相互影響。例如想在每月的20日觸發排程,不管20日到底是星期幾,則只能使用如下寫法: 13 13 15 20 * ?, 其中最後一位只能用?,而不能使用*,如果使用*表示不管星期幾都會觸發,實際上並不是這樣。
(3)-:表示範圍。例如在Minutes域使用5-20,表示從5分到20分鐘每分鐘觸發一次
(4)/:表示起始時間開始觸發,然後每隔固定時間觸發一次。例如在Minutes域使用5/20,則意味著5分鐘觸發一次,而25,45等分別觸發一次.
(5),:表示列出列舉值。例如:在Minutes域使用5,20,則意味著在5和20分每分鐘觸發一次。
(6)L:表示最後,只能出現在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味著在最後的一個星期四觸發。
(7)W:表示有效工作日(週一到週五),只能出現在DayofMonth域,系統將在離指定日期的最近的有效工作日觸發事件。例如:在 DayofMonth使用5W,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發。如果5日是星期天,則在6日(週一)觸發;如果5日在星期一到星期五中的一天,則就在5日觸發。另外一點,W的最近尋找不會跨過月份 。
(8)LW:這兩個字元可以連用,表示在某個月最後一個工作日,即最後一個星期五。
(9)#:用於確定每個月第幾個星期幾,只能出現在DayofMonth域。例如在4#2,表示某月的第二個星期三。
三、常用表示式例子
(1)0 0 2 1 * ? * 表示在每月的1日的凌晨2點調整任務
(2)0 15 10 ? * MON-FRI 表示週一到週五每天上午10:15執行作業
(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每個月的最後一個星期五上午10:15執行作
(4)0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
(5)0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
(6)0 0 12 ? * WED 表示每個星期三中午12點
(7)0 0 12 * * ? 每天中午12點觸發
(8)0 15 10 ? * * 每天上午10:15觸發
(9)0 15 10 * * ? 每天上午10:15觸發
(10)0 15 10 * * ? * 每天上午10:15觸發
(11)0 15 10 * * ? 2005 2005年的每天上午10:15觸發
(12)0 * 14 * * ? 在每天下午2點到下午2:59期間的每1分鐘觸發
(13)0 0/5 14 * * ? 在每天下午2點到下午2:55期間的每5分鐘觸發
(14)0 0/5 14,18 * * ? 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
(15)0 0-5 14 * * ? 在每天下午2點到下午2:05期間的每1分鐘觸發
(16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44觸發
(17)0 15 10 ? * MON-FRI 週一至週五的上午10:15觸發
(18)0 15 10 15 * ? 每月15日上午10:15觸發
(19)0 15 10 L * ? 每月最後一日的上午10:15觸發
(20)0 15 10 ? * 6L 每月的最後一個星期五上午10:15觸發
(21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最後一個星期五上午10:15觸發
(22)0 15 10 ? * 6#3 每月的第三個星期五上午10:15觸發
注:
(1)有些子表示式能包含一些範圍或列表
例如:子表示式(天(星期))可以為 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
“*”字元代表所有可能的值
因此,“*”在子表示式(月)裡表示每個月的含義,“*”在子表示式(天(星期))表示星期的每一天
“/”字元用來指定數值的增量
例如:在子表示式(分鐘)裡的“0/15”表示從第0分鐘開始,每15分鐘
在子表示式(分鐘)裡的“3/20”表示從第3分鐘開始,每20分鐘(它和“3,23,43”)的含義一樣
“?”字元僅被用於天(月)和天(星期)兩個子表示式,表示不指定值
當2個子表示式其中之一被指定了值以後,為了避免衝突,需要將另一個子表示式的值設為“?”
“L” 字元僅被用於天(月)和天(星期)兩個子表示式,它是單詞“last”的縮寫
但是它在兩個子表示式裡的含義是不同的。
在天(月)子表示式中,“L”表示一個月的最後一天
在天(星期)自表示式中,“L”表示一個星期的最後一天,也就是SAT
如果在“L”前有具體的內容,它就具有其他的含義了
例如:“6L”表示這個月的倒數第6天,“FRIL”表示這個月的最一個星期五
注意:在使用“L”引數時,不要指定列表或範圍,因為這會導致問題
相關推薦
java 定時任務之——cron表示式詳解
在介紹cron表示式詳解之前如果需要了解@Scheduled註解配置的可以點這裡 Cron表示式是一個字串,字串以5或6個空格隔開,分為6或7個域,每一個域代表一個含義,Cron有如下兩種語法格式: (1) Seconds Minutes Hours Dayo
Java定時任務排程工具Timer詳解
做專案很多時候會用到定時任務,比如在深夜,流量較小的時候,做一些統計工作。早上定時傳送郵件,更新資料庫等。 這裡可以用Java的Timer或執行緒池實現。 Timer可以實現,不過Timer存在一些問題。他起一個單執行緒,如果有異常產生,執行緒將退出,整個定時任務就失敗。 Timer
Java定時器的cron設定詳解Quartz
這些星號由左到右按順序代表 : * * * * * * * 格式: [秒] [分] [小時] [日] [月] [周] [年] 序號 說明 是否必填 允許填寫的值 允許的萬用字元 1 秒 是 0-59
Spring定時任務之@Scheduled註解(cron表示式詳解)
一個cron表示式有至少6個(也可能7個)有空格分隔的時間元素。 按順序依次為 1 秒(0~59) 2 分鐘(0~59) 3 小時(0~23) 4 天(0~31) 5 月(0~11) 6 星期
quartz定時任務cron表示式詳解
cron表示式用於配置cronTrigger的例項。cron表示式實際上是由七個子表示式組成。這些表示式之間用空格分隔。 1.Seconds (秒)2.Minutes(分)3.Hours(小時)4.Day-of-Month (天)5.Month(月)6.Day-of-Week (周)7.Year(年) 例:
定時任務cron表示式詳解
cron表示式順序秒分鐘小時日期月份星期年(可選)取值0-590-590-231-30(31)1-121-7允許特殊字元, - * /, - * /, - * /, - * / ? L W C, - *
Quartz_quartz定時任務 cron表示式詳解
cron表示式用於配置cronTrigger的例項。cron表示式實際上是由七個子表示式組成。這些表示式之間用空格分隔。 1.Seconds (秒) 2.Minutes(分) 3.Hours(小時) 4.Day-of-Month (天) 5.Month(月) 6.Day-
定時器Cron表示式詳解
Cron有如下兩種語法格式: 1.Seconds Minutes Hours DayofMonth Month DayofWeek Year 2.Seconds Minutes Hours DayofMonth Month DayofWeek每一個域可出現的字
Python定時任務框架APScheduler學習詳解
情況 類型 container 邏輯 專業 取值 控制 scheduled 執行器 轉載一篇文章,講解了Python定時任務框架APScheduler的使用,原文地址:https://www.cnblogs.com/luxiaojun/p/6567132.html,內容如下
Cron表示式詳解和表示式的驗證
本篇不算原創,因為主要內容來自網上的部落格,所以給出我參考文章的連結。 本文cron表示式詳解的大部分內容參考了[cron表示式詳解]和Quartz使用總結、Cron表示式 這兩篇文章。 cron校驗的內容參考了 判斷cron表示式輸入是否有效的正則表示式 和Verifying a cron expres
SpringBoot 定時任務 @Scheduled cron表示式
1.首先要用springBoot的定時類要在springBoot的啟動類上新增 @EnableScheduling註解 ** * * @Author: ruanyanghui * @Company: bibll * @Email: [email pro
Quartz定時任務框架(二) Quartz詳解
目錄 Quartz API Scheduler排程程式、SchedulerFactory排程程式工廠 scheduler排程程式 SchedulerFactory Job & JobDetail JobDataMap Job例項化的過程 job的註解宣告和併發
Cron表示式詳解(job表示式)
Cron表示式的詳細用法 欄位 允許值 允許的特殊字元 秒 0-59 , - * / 分 0-59 , - * / 小時 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7
你不可不知的Java引用型別之ReferenceQueue原始碼詳解
定義 引用佇列是用於儲存要回收的引用物件的引用佇列。 說明 對於軟引用、弱引用和虛擬引用,如果希望在垃圾收集器回收物件以進行其他處理時得到通知,則需要使用引用佇列。 當垃圾收集器掃描要回收的物件時,將對應的引用包裝器類(引用物件)放入其註冊的引用佇列佇列中。可以從佇列中獲得相應的物件
spring boot中使用Schedule定時任務以及cron表示式
一、定時任務 1、在入口程式中新增@EnableScheduling註解 2、在一個類中的某個方法上,新增@Scheduled註解(其中cron = “0 0/1 * * * *”)代表一分鐘執行一次 二、cron表示式 1、cron一共有7位,但是最後一位
Quartz定時任務排程cron 表示式時間格式
cron 表示式的格式 Quartz Cron 表示式支援到七個域 月份和星期的名稱是不區分大小寫的。FRI 和 fri是一樣的。 域之間有空格分隔,這和 UNIX cron 一樣。無可爭辯的,我們能寫的最簡單的表示式看起
定時任務的cron表示式
Cron表示式 Quartz使用類似於Linux下的Cron表示式定義時間規則,Cron表示式由6或7個由空格分隔的時間欄位組成,如表1所示: 位置 時間域名 允許值 允許的特殊字元 1 秒 0-59 , - * / 2 分鐘 0-59 , - * / 3 小
Cron表示式詳解
1.cron表示式格式: {秒數} {分鐘} {小時} {日期} {月份} {星期} {年份(可為空)} 2.cron表示式各佔位符解釋: {秒數} ==> 允許值範圍: 0~59 ,不允許為空值,若值不合法,排程器將丟擲SchedulerException異常
定時任務 Quartz Cron表示式
cron最初是unix中基於時間的作業排程程式。 cron表示式是由空格分隔的6或7個域組成的字串。域中可以包含任何允許的值,包括含有特殊字元的組合值。cron表示式可以有如下兩種格式(實際使用中為了簡
java 定時任務之的兩種實現方式
1、使用spring @Scheduled註解執行定時任務: 執行!!! 關於Cron表示式(轉載) 表示式網站生成: http://cron.qqe2.com/ 直接點選 作者:http://blog.csdn.net/supingemail/ar