springboot之@Async實現異步

聽說springboot有個註解@Async能夠實現異步調用,而後我來用用看!spring

增長一個maven新模塊:springboot

增長以下依賴,不增長配置:併發

而後咱們寫一個異步調用的服務:異步

這裏須要實現異步的功能,還須要在Application加上註解@EnableAsync,相似於Spring的<task:*> XML命名空間中的功能。maven

而後咱們寫一個測試用例測試

日誌輸出:.net

從上面的日誌中,咱們能夠看到調用是異步執行的,就是使用一下這個功能,實際上使用也不用這麼複雜吧,使用的Future<String>,咱們在新版本的JDK中,還能夠使用其餘的方式!線程

咱們能夠看到在EnableAsync註解中有@Import AsyncConfigurationSelector.class(用來導入一個或多個class,這些類會注入到spring容器中,或者配置類,配置類裏面定義的bean都會被spring容器託管)。日誌

@EnableAsync註釋啓動了Spring在後臺線程池中運行@Async方法的能力。該類還自定義使用的Executor。在咱們的示例中,咱們但願將併發線程數限制爲2並將隊列大小限制爲500.您能夠調整更多內容。默認狀況下,使用SimpleAsyncTaskExecutor。blog

 文檔裏寫了@Async有兩個使用的限制

  • 它必須僅適用於public方法
  • 在同一個類中調用異步方法將沒法正常工做(self-invocation)

下節再續!

有什麼討論的內容,能夠加我公衆號:

相關文章
相關標籤/搜索