先了解cron表示式
cron表示式是乙個字串,字串以5或6個空格隔開,分為6或7個域,每乙個域代表乙個含義,cron有如下兩種語法格式:
seconds minutes hours dayofmonth month dayofweek year或seconds minutes hours dayofmonth month dayofweek
每乙個域可出現的字元如下:
seconds:可出現", - * /"四個字元,有效範圍為0-59的整數
minutes:可出現",- * /"四個字元,有效範圍為0-59的整數
hours:可出現",- * /"四個字元,有效範圍為0-23的整數
dayofmonth:可出現", - * / ? l w c"八個字元,有效範圍為0-31的整數
month:可出現", - * /"四個字元,有效範圍為1-12的整數或jan-dec
dayofweek:可出現", - * / ? l c #"八個字元,有效範圍為1-7的整數或sun-sat兩個範圍。// 0和7均代表星期天
year:可出現", - * /"四個字元,有效範圍為1970-2023年
每乙個域都使用數字,但還可以出現如下特殊字元,它們的含義是:
*:表示匹配該域的任意值,假如在minutes域使用 * , 即表示每分鐘都會觸發事件。
?:只能用在dayofmonth和dayofweek兩個域。它也匹配域的任意值,但實際不會。因為dayofmonth和dayofweek會相互影響,以 * 為優先匹配
-:表示範圍,例如在minutes域使用5-20,表示從5分到20分鐘每分鐘觸發一次
/:表示起始時間開始觸發,然後每隔固定時間觸發一次,例如在minutes域使用5/20,則意味著5分鐘觸發一次,而25,45等分別觸發一次.
,:表示列出列舉值。例如:在minutes域使用5,20,則意味著在第5和第20分鐘分別觸發一次。
l:表示最後,只能出現在dayofweek和dayofmonth域,如果在dayofweek域使用5l,意味著在最後的乙個星期四觸發。
w:表示有效工作日(周一到周五),只能出現在dayofmonth域,系統將在離指定日期的最近的有效工作日觸發事件。例如:在 dayofmonth使用5w,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發。如果5日是星期天,則在6日(周一)觸發;如果5日在星期一到星期五中的一天,則就在5日觸發。另外一點,w的最近尋找不會跨過月份
lw:這兩個字元可以連用,表示在某個月最後乙個工作日,即最後乙個非週六週末的日期。
#:用於確定每個月第幾個星期幾,只能出現在dayofweek域。例如在4#2,表示某月的第二個星期三。
在springboot中,我們可以需要先在主執行程式上新增註解@enablescheduling用來開啟定時功能。
在需要使用的方法上新增註解 @scheduled(cron = "")," "內為cron表示式
這裡寫乙個小例子
//在特定的時間執行這個方法~
//cron表示式
@scheduled(cron = "0 0 10 1 * ? *")
public
void
hello()
表示每個月1號的10:00會執行一次這個程式。
cron表示式使用
cron表示式是乙個字串,分為6或7個域,每乙個域代表乙個含義,格式分別如下 seconds minutes hours dayofmonth month dayofweek seconds minutes hours dayofmonth month dayofweek year 每個域的取值寫法...
Java使用Cron表示式
crontriggers往往比 trigger更有用,如果您需要基於日曆的概念,而非 trigger完全指定的時間間隔,的發射工作的時間表。crontrigger,你可以指定觸發的時間表如 每星期五中午 或 每個工作日9 30時 甚至 每5分鐘一班9 00和10 00逢星期一上午,星期三星期五 即便...
Java使用Cron表示式
crontriggers往往比 trigger更有用,如果您需要基於日曆的概念,而非 trigger完全指定的時間間隔,的發射工作的時間表。crontrigger,你可以指定觸發的時間表如 每星期五中午 或 每個工作日9 30時 甚至 每5分鐘一班9 00和10 00逢星期一上午,星期三星期五 即便...