天天看點

SpringBoot 定時任務Schedule,異步任務Async

定時任務Schedule

異步任務Async

cron表達式

spring自帶了定時任務、異步任務,springboot中自然也包含了進來,此處主要介紹在springboot中的使用。

定時任務、異步任務是spring|spring自帶的,不需要額外添加依賴。

1、引導類上加 @EnableScheduling

2、yml中配置定時任務的線程池

一個線程執行一個定時任務,如果線程數不夠,會出現部分定時任務沒有可用線程來執行的情況。

springboot的定時任務、異步任務都是使用單獨的線程池,如果公司有線程池使用規範或覺得内置的線程池不滿足需求,可以使用自定義的線程池。

3、編寫定時任務

通常會把定時|異步任務抽出來,統一放在單獨的包、類中,友善維護

異步任務可分為2類

不需要傳回資料:比如處理日志、發送郵件、短信…

需要傳回資料:比如使用者支付訂單要校驗庫存、使用者餘額、風控…都沒有問題才允許支付訂單

異步任務都是啟動一條新線程來執行,不阻塞目前線程,可以提高效率。

1、引導類上加 @EnableAsync

2、yml中配置異步任務的線程池

3、編寫異步任務

一個異步任務對應一個方法,是以又叫做異步方法

注意點

異步任務會作為 Future 送出給線程池執行,是以異步任務的傳回值隻能是 void 或 Future

異步任務不能使用 private 或 static 修飾,不然線上程池中調用不了

異步任務不能與調用方在同一個類中,通常是把異步任務寫在單獨的包、類中,友善維護

4、使用異步任務

一共7個字段,依次是

second:0-59

minute:0-59

hour:0-23

day of month:1-31

month:1-12

day of week:1-7

year:1970-2099

前6個必填,第7個選填、可以預設。

使用示例

繼續閱讀