閒來無事想寫乙個定時執行任務的程式,本來想的是掛起乙個執行緒然後sleep,但感覺不是很好,於是查閱資料,發現springboot有乙個註解@scheduled是關於定時任務的。
在啟動類加上註解@enablescheduling
@enablescheduling
public
class
}
@component
public
class
schedulertask
}
@scheduled接受兩種定時的設定:
一種是cornexpression。
一種是rate/delay表示式(毫秒值):
@scheduled(fixedrate = 6000):上一次開始執行時間點後每隔6秒執行一次。
@scheduled(fixeddelay = 6000):上一次執行完畢時間點之後6秒再執行。
@scheduled(initialdelay=1000, fixedrate=6000):第一次延遲1秒後執行,之後按fixedrate的規則每6秒執行一次。
cornexpression表示式詳解:
完整字段:[秒] [分] [小時] [日] [月] [周] [年]
字段 允許值 允許特殊字元
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日 1-31 , - * ? / l w c
月 1-12或jan-dec , - * /
周 1-7或sun-sat , - * ? / l c #
年 留空或1970-2099 , - * /
注:*表示所有值,在分鐘裡表示每一分鐘觸發。在小時,日期,月份等裡面表示每一小時,每一日,每一月。
?表示不指定值。表示不關心當前位置設定的值。 比如不關心是週幾,則周的位置填寫?。 主要是由於日期跟週是有重複的所以兩者必須有一者設定為?
- 表示區間。小時設定為10-12表示10,11,12點均會觸發。
,表示多個值。 小時設定成10,12表示10點和12點會觸發。
/ 表示遞增觸發。 5/15表示從第5秒開始,每隔15秒觸發。
l 表示最後的意思。 日上表示最後一天。星期上表示星期六或7。 l前加資料,表示該資料的最後乙個。
星期上設定6l表示最後乙個星期五。 6表示星期五
w表示離指定日期最近的工作日觸發。15w離該月15號最近的工作日觸發。
#表示每月的第幾個週幾。 6#3表示該月的第三個周五。
示例:「0 0 12 * * ?」 每天中午12點觸發
「0 15 10 ? * *」 每天上午10:15觸發
「0 15 10 * * ?」 每天上午10:15觸發
「0 15 10 * * ? *」 每天上午10:15觸發
「0 15 10 * * ? 2005」 2023年的每天上午10:15觸發
「0 * 14 * * ?」 在每天下午2點到下午2:59期間的每1分鐘觸發
「0 0/5 14 * * ?」 在每天下午2點到下午2:55期間的每5分鐘觸發
「0 0/5 14,18 * * ?」 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
「0 0-5 14 * * ?」 在每天下午2點到下午2:05期間的每1分鐘觸發
「0 10,44 14 ? 3 wed」 每年三月的星期三的下午2:10和2:44觸發
「0 15 10 ? * mon-fri」 周一至周五的上午10:15觸發
「0 15 10 15 * ?」 每月15日上午10:15觸發
「0 15 10 l * ?」 每月最後一日的上午10:15觸發
「0 15 10 ? * 6l」 每月的最後乙個星期五上午10:15觸發
「0 15 10 ? * 6l 2002-2005」 2023年至2023年的每月的最後乙個星期五上午10:15觸發
「0 15 10 ? * 6#3」 每月的第三個星期五上午10:15觸發
每天早上6點 0 6 * * * 每兩個小時 0 */2 * * *
晚上11點到早上8點之間每兩個小時,早上八點 0 23-7/2,8 * * *
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 0 11 4 * 1-3
1月1日早上4點 0 4 1 1 *
參考:
SpringBoot 定時任務
第一步 在啟動類中加入如下註解 enablescheduling public class public static void main string args 注意 enablescheduling必須加,否則無法開啟定時任務 第二步 建立定時任務 component public class ...
Spring boot定時任務
最近做專案,需要使用定時任務,半個小時去更新redis資料,於是便學習了一下經驗。希望可以幫到你們。定時任務可使用三種 created by fx on 2017 9 4.component allargsconstructor public class featuredatatask 實現乙個任務...
Spring boot 定時任務
1.在啟動類上加 enablescheduling註解 package com.example.demo import org.springframework.scheduling.annotation.enablescheduling enablescheduling public static ...