SpringBoot下@EnableAsync與@Async非同步任務的使用
阿新 • • 發佈:2022-03-30
參考:
https://www.cnblogs.com/tsangyi/p/13303018.html
https://www.cnblogs.com/dudou/p/15136180.html
一、前言
我們在使用多執行緒的時候,往往需要建立Thread類,或者實現Runnable介面,如果要使用到執行緒池,我們還需要來建立Executors。
在使用spring中,已經給我們做了很好的支援。只要要 @EnableAsync 就可以使用多執行緒。使用 @Async 就可以定義一個執行緒任務。通過spring給我們提供的ThreadPoolTaskExecutor就可以使用執行緒池。
預設情況下,Spring將搜尋相關的執行緒池定義:要麼在上下文中搜索唯一的TaskExecutor
業務需求:
比如使用者在下單完成的時候,有兩個任務同時執行,分別是發快遞和給使用者傳送簡訊兩個事情要做,我們知道在Java中程式碼都是依次執行的,比如傳送快遞需要3秒鐘,傳送簡訊需要1秒鐘。
這兩個事件沒有先前先後的關係,那麼完全可以兩個事情一起做,非同步任務就是來解決這個問題的!
二、程式碼實現
目錄結構:
1、定義業務介面:com.service
傳送簡訊:AsyncEmailService
/** * @ClassName AsyncService * @Author zhangzhixi * @Description 傳送簡訊業務 * @Date 2022-3-29 20:08 * @Version 1.0 */ public interface AsyncEmailService { /** * 傳送簡訊 */ void executeAsync(); }
傳送快遞: