1. 程式人生 > 程式設計 >Spring Boot定時+多執行緒執行過程解析

Spring Boot定時+多執行緒執行過程解析

這篇文章主要介紹了Spring Boot定時+多執行緒執行過程解析,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Spring Boot 定時任務有多種實現方式,我在一個微型專案中通過註解方式執行定時任務。

具體執行的任務,通過多執行緒方式執行,單執行緒執行需要1小時的任務,多執行緒下5分鐘就完成了。

執行效率提升10倍以上,執行效率提升10倍以上,執行效率提升10倍以上。

重要的事情說三遍!

本文不深入介紹具體的原理,大家如果要實現類似的功能,只需要執行下面1~5即可。

(1)定時任務實現

在需要定時執行的的方法上面增加註解 @Scheduled(cron="01 00 17 * * ?") //[秒] [分] [小時] [日] [月] [周] [年]。

其中cron類似於Linux定時執行的寫法,上述表示該任務每天17:00執行一次。

(2)定時任務方法內部多執行緒執行的部分

需要多執行緒執行的部分,要重新定義一個類,然後注入該類的變數。如我這裡定義了一個類DoBackupTask,在這個類中通過多執行緒方式執行任務。

(3)多執行緒實現部分

多執行緒執行方法上,增加註解@Async("taskExecutor"),引數為執行緒池的名稱

(4)執行緒池實現

執行緒池我定義了一個類,在該類中定義了一個方法asyncExecutor。該方法生成ThreadPoolTaskExecutor的一個物件,設定執行緒數量,執行緒池的名稱等引數。

(5)當上述步驟都做好了,然而並沒有效果。可能你漏了最關鍵的一步:在應用啟動類上,增加註解

@EnableScheduling 啟用多執行緒

@EnableAsync 非同步執行

如果還是不清楚具體位置,就找@SpringBootApplication這個註解,放在一起就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。