一共可以分三種情況
第一種
未在手動在項目中配置任何線程池
spring boot 會默認添加一個coreSize=8的 無界線程池,名稱為applicationTaskExecutor (源碼:org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration)
這時使用@Async注解使用的就是applicationTaskExecutor線程池
第二種
在項目配置了線程池,但是只有一個
例如,我在項目中配置了一個名為 myThreadPool的線程池
這時使用@Async注解使用的就是myThreadPool線程池
第三種
在項目配置了線程池且有多個
例如,我在項目中配置了 myThreadPool1 、myThreadPool2 等若干個線程池
這時使用@Async注解,如果不指定使用哪個線程池,默認使用的就是SimpleAsyncTaskExecutor
SimpleAsyncTaskExecutor是 為每個任務啟動一個新線程,異步執行。支持通過“concurrentyLimit”bean屬性限制并發線程。默認情況下,并發線程的數量是無限的。