Spring Boot 线程池配置详解
一、核心配置参数及作用
- 基础参数
核心线程数 (corePoolSize)
作用:线程池中始终保持存活的线程数量,即使空闲也不回收。
建议:根据任务类型设定(如 I/O 密集型任务可设为 CPU 核心数 × 2)。
最大线程数 (maxPoolSize)
作用:线程池允许创建的最大线程数,仅在队列满时触发扩容。
建议:设置为核心线程数的 2~3 倍,避免资源耗尽。
队列容量 (queueCapacity)
作用:任务缓冲队列的大小,决定线程池的请求处理能力。
建议:
有界队列(如 LinkedBlockingQueue):限制资源占用,防止内存溢出。
无界队列:仅适用于任务量可控且无突发流量的场景。
线程存活时间 (keepAliveSeconds)
作用:非核心线程空闲时的最大存活时间(单位:秒)。
建议:设为 60~120 秒,平衡资源回收效率与频繁创建的开销。
2. 高级配置
线程名称前缀
作用:标识线程池类型,便于监控和日志排查。
示例:
properties
Copy Code
spring.task.execution.thread-name-prefix=my-thread-
拒绝策略 (RejectedExecutionHandler)
作用:队列和线程池均满时的处理策略。
常见策略:
策略名 行为 适用场景
AbortPolicy 抛出异常拒绝新任务 严格保障任务不丢失
DiscardOldestPolicy 丢弃队列最旧任务并重试提交 高频请求场景(如实时处理)
CallerRunsPolicy 由提交任务的线程直接执行 限流场景
二、配置方式
- 配置文件(application.properties/yml)
spring.task.execution