天天看點

Async注解使用詳解及注意事項

文章目錄

      • SpringBoot使用條件
      • Async使用注意事項
      • 同類中方法調用注解失效
      • 報錯: No thread-bound request found

Springboot中當我們需要方法異步調用時,一般可以通過建立線程池的方法異實作異步,在Spring中也可以通過@Async注解達到異步調用的效果,被Async标注的方法或類,會開啟一個子線程。

SpringBoot使用條件

  • 方法上加@Async注解
  • 啟動類或者配置類上@EnableAsync

Async使用注意事項

1)傳回值:不要傳回值直接void;需要傳回值用AsyncResult或者CompletableFuture

2)可自定義執行器并指定例如:@Async(“otherExecutor”)

3)@Async 必須不同類間調用: A類–》B類.C方法()(@Async注釋在B類/方法中),如果在同一個類中調用,會變同步執行,例如:A類.B()–>A類[email protected] C(),原因是:底層實作是代理對注解掃描實作的,B