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這個注解,放在一起就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM