1. 程式人生 > >java 定時任務之——cron表示式詳解

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