重慶分公司,新征程啟航
為企業(yè)提供網站建設、域名注冊、服務器等服務
為企業(yè)提供網站建設、域名注冊、服務器等服務
這篇文章主要介紹了Spring Boot定時+多線程執(zhí)行過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Spring Boot 定時任務有多種實現方式,我在一個微型項目中通過注解方式執(zhí)行定時任務。
具體執(zhí)行的任務,通過多線程方式執(zhí)行,單線程執(zhí)行需要1小時的任務,多線程下5分鐘就完成了。
執(zhí)行效率提升10倍以上,執(zhí)行效率提升10倍以上,執(zhí)行效率提升10倍以上。
重要的事情說三遍!
本文不深入介紹具體的原理,大家如果要實現類似的功能,只需要執(zhí)行下面1~5即可。
(1)定時任務實現
在需要定時執(zhí)行的的方法上面增加注解 @Scheduled(cron="01 00 17 * * ?") //[秒] [分] [小時] [日] [月] [周] [年]。
其中cron類似于Linux定時執(zhí)行的寫法,上述表示該任務每天17:00執(zhí)行一次。
(2)定時任務方法內部多線程執(zhí)行的部分
需要多線程執(zhí)行的部分,要重新定義一個類,然后注入該類的變量。如我這里定義了一個類DoBackupTask,在這個類中通過多線程方式執(zhí)行任務。
(3)多線程實現部分
多線程執(zhí)行方法上,增加注解@Async("taskExecutor"),參數為線程池的名稱
(4)線程池實現
線程池我定義了一個類,在該類中定義了一個方法asyncExecutor。該方法生成ThreadPoolTaskExecutor的一個對象,設置線程數量,線程池的名稱等參數。
(5)當上述步驟都做好了,然而并沒有效果。可能你漏了最關鍵的一步:在應用啟動類上,增加注解
@EnableScheduling 啟用多線程
@EnableAsync 異步執(zhí)行
如果還是不清楚具體位置,就找@SpringBootApplication這個注解,放在一起就可以了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯建站。
另外有需要云服務器可以了解下創(chuàng)新互聯建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、建站服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。