1. 程式人生 > >SpringBoot使用@Async非同步呼叫方法

SpringBoot使用@Async非同步呼叫方法

有時間一些比較耗時的方法需要使用非同步呼叫,之前會自己維護一個執行緒池,然後非同步呼叫,但是在Spring環境下可以一個@Async輕鬆搞定。

SpringBoot要使用@Async需要以下兩個步驟:

1.使用@EnableAsync開啟非同步;

2.定義Spring元件,使用@Component和@Async;

示例:

使用@EnableAsync開啟非同步:


定義Spring元件,使用@Component和@Async:


測試用的Controller:


啟動專案,執行結果:


非同步方法執行成功,可以看到有個日誌打印出來了,這個是Spring列印的日誌,因為我們沒有指定非同步執行的executor,在第一次執行的時候會找不到executor,會返回null,由Spring預設的executor去執行,這個以後有時間再記錄。

其實非同步註解代理的方法可以有一個返回值Future<T>,可以用isCancelled判斷非同步任務是否取消,isDone判斷任務是否執行結束,get獲取返回結果。

但是有一個要注意的是在使用不當的時候這個@Async註解會失效,這個在後面一篇部落格會介紹: