ZPY博客

在springboot中,@Async使用的默认线程池的核心线程参数是多少?

在 Spring Boot 中,@Async 使用的默认线程池核心线程数参数为 ​8。这是由 Spring Boot 的自动配置类 TaskExecutionAutoConfiguration 决定的,其默认参数如下:

默认线程池参数

  1. 核心线程数(core-size)​: 8
  2. 最大线程数(max-size)​Integer.MAX_VALUE(即无限制扩展)
  3. 队列容量(queue-capacity)​Integer.MAX_VALUE(使用无界队列 LinkedBlockingQueue
  4. 空闲线程保留时间(keep-alive)​: 60 秒
  5. 拒绝策略(rejection-policy)​AbortPolicy(直接抛出异常)

注意事项

如何验证默认参数?

可通过调试源码中的 TaskExecutionProperties 类(属于 org.springframework.boot.autoconfigure.task 包)查看默认值,或直接打印线程池实例的属性

自定义配置示例

若需调整参数,可在 application.yml 中覆盖默认值:

yaml
spring:
  task:
    execution:
      pool:
        core-size: 3    # 核心线程数
        max-size: 6     # 最大线程数
        queue-capacity: 1000
        keep-alive: 3s
        thread-name-prefix: my-thread-

此时,异步任务将使用调整后的线程池

总结

Spring Boot 的默认线程池参数设计偏向“保守可用但非生产推荐”,开发者应根据实际并发需求显式配置线程池,避免依赖默认值