當前位置:
首頁 > 知識 > springboot之定時任務

springboot之定時任務

第一步:要在啟動類上添加註解@EnableScheduling開啟定時任務

  1. @EnableScheduling
  2. @SpringBootApplication
  3. public class FirstApplication {
  4. private static Logger log = LoggerFactory.getLogger(FirstApplication.class);
  5. public static void main(String[] args) {
  6. SpringApplication.run(FirstApplication.class, args);
  7. }
  8. }

第二步:創建定時任務類,交給spring管理

  1. package com.springboot.first.task;
  2. import org.springframework.scheduling.annotation.Scheduled;
  3. import org.springframework.stereotype.Component;
  4. import java.text.DateFormat;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. @Component
  8. public class TaskTest {
  9. @Scheduled(cron = "0/10 * * * * ?")
  10. public void task1(){
  11. DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  12. System.out.println(sdf.format(new Date())+"------------task1---10秒執行一次");
  13. }
  14. @Scheduled(cron = "0/5 * * * * ?")
  15. public void task2(){
  16. DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  17. System.out.println(sdf.format(new Date())+"------------task2---5秒執行一次");
  18. }
  19. }

第三步:設置執行時間@Scheduled(cron="0/10 * * * * ?"),cron表達式設置規則如下:

欄位 允許值 允許的特殊字元

秒 0-59 , - * /

分 0-59 , - * /

小時 0-23 , - * /

日期 1-31 , - * ? / L W C

月份 1-12 或者 JAN-DEC , - * /

星期 1-7 或者 SUN-SAT , - * ? / L C #

年(可選) 留空, 1970-2099 , - * /

, 表達一個列表值,如在星期欄位中使用 1,2,4 ,則表示星期天,星期一,星期三

- 區間 表示一個區間範圍

* 通配符

? 你不想設置那個欄位,目前只能出現在日期和星期這兩個位置

/ 如:x/y,x是開始值,y是步長,比如在第一位(秒) 0/10就是,從0秒開始,每10秒

# #號只能出現在星期的位置,例如:(0 10 3 ? * 1#3 ) 每個月的第三個星期的星期天的3點10分執行

除了通過cron表達式設置時間,還有以下幾種:

@Scheduled(fixedRate = 5000) :上一次開始執行時間點之後5秒再執行(不在乎執行了多長時間,每五秒執行一次)

@Scheduled(fixedDelay = 5000) :上一次執行完畢時間點之後5秒再執行

@Scheduled(initialDelay=1000, fixedRate=5000) :第一次延遲1秒後執行,之後按fixedRate的規則每5秒執行一次

運行結果:

springboot之定時任務

springboot之定時任務

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

win10 uwp教你使用 asp dotnet core 做 cs 程序
動態添加控制項及刪除

TAG:程序員小新人學習 |