spring boot 多執行緒併發定時任務

2021-08-10 17:44:35 字數 2185 閱讀 8677

剛剛看了下spring boot實現定時任務的文章,感覺還不錯。spring boot 使用spring自帶的schedule來實現定時任務變得非常簡單和方便。在這裡個大家分享下。

@enablescheduling //開啟定時任務

public static void main(string args)

}

@component

public class scheduledtasks

}

啟動專案,檢視控制台列印資訊,發現定時任務已經生效。spring boot 和scheduled整合完畢。

但是後來發現個問題,通過同時測試幾個任務發現,所有的任務都是在同乙個執行緒池中的同乙個執行緒來完成的。在實際開發過程中,我們當然不希望所有的任務都執行在乙個執行緒中。

@scheduled(cron="0/1 * * * * ? ")   //每1秒執行一次 

public void testcron1()

@scheduled(cron="0/2 * * * * ? ") //每2秒執行一次

public void testcron2()

@scheduled(cron="0/3 * * * * ? ") //每3秒執行一次

public void testcron3()

@scheduled(cron="0/4 * * * * ? ") //每4秒執行一次

那麼,怎麼設計成多執行緒實現併發呢?在網上看到過這樣的解決方案。通過scheduleconfig配置檔案實現schedulingconfigurer介面,並重寫setschedule***ng方法,我們嘗試著配置了一下。

@configuration

public class scheduleconfig implements schedulingconfigurer

}

這樣就完成了多執行緒併發的配置?我們啟動專案通過控制台輸出資訊驗證一下結果,最後發現所有的任務都在同乙個執行緒池但不同執行緒中完成,說明這個方案完全可行,這樣,我們就完成了spring boot 多執行緒併發定時任務。

@scheduled所支援的引數:

1.cron:cron表示式,指定任務在特定時間執行;

2.fixeddelay:表示上一次任務執行完成後多久再次執行,引數型別為long,單位ms;

3.fixeddelaystring:與fixeddelay含義一樣,只是引數型別變為string;

4.fixedrate:表示按一定的頻率執行任務,引數型別為long,單位ms;

5.fixedratestring: 與fixedrate的含義一樣,只是將引數型別變為string;

6.initialdelay:表示延遲多久再第一次執行任務,引數型別為long,單位ms;

7.initialdelaystring:與initialdelay的含義一樣,只是將引數型別變為string;

8.zone:時區,預設為當前時區,一般沒有用到。

cron表示式範例:

每隔5秒執行一次:*/5 * * * * ?

每隔1分鐘執行一次:0 */1 * * * ?

每天23點執行一次:0 0 23 * * ?

每天凌晨1點執行一次:0 0 1 * * ?

每月1號凌晨1點執行一次:0 0 1 1 * ?

每月最後一天23點執行一次:0 0 23 l * ?

每週星期天凌晨1點實行一次:0 0 1 ? * l

在26分、29分、33分執行一次:0 26,29,33 * * * ?

每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ?

參考文章

springboot定時任務及cron表示式詳解

多執行緒併發

多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...

多執行緒併發

更簡單的執行緒池 多執行緒和多程序都可以很容易的實現併發,協程通過切換上下文來充分利用cpu實現併發效果 threading模組 thread類的基本狀態和行為 屬性名和值 name none,group none,target none,args kwargs daemon none 方法 sta...

spring boot 整合多執行緒

配置pom檔案 org.mybatis.spring.bootgroupid mybatis spring boot starterartifactid 1.3.0version dependency org.springframework.bootgroupid spring boot confi...