一共可以分三种情况
第一种
未在手动在项目中配置任何线程池
spring boot 会默认添加一个coreSize=8的 无界线程池,名称为applicationTaskExecutor (源码:org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration)
这时使用@Async注解使用的就是applicationTaskExecutor线程池
第二种
在项目配置了线程池,但是只有一个
例如,我在项目中配置了一个名为 myThreadPool的线程池
这时使用@Async注解使用的就是myThreadPool线程池
第三种
在项目配置了线程池且有多个
例如,我在项目中配置了 myThreadPool1 、myThreadPool2 等若干个线程池
这时使用@Async注解,如果不指定使用哪个线程池,默认使用的就是SimpleAsyncTaskExecutor
SimpleAsyncTaskExecutor是 为每个任务启动一个新线程,异步执行。支持通过“concurrentyLimit”bean属性限制并发线程。默认情况下,并发线程的数量是无限的。