ThreadPoolTaskExecutor 属性解释
时间: 2025-03-26 09:58:10 浏览: 32
### ThreadPoolTaskExecutor 属性详解
#### 核心线程数 `corePoolSize`
核心线程的数量是指即使处于空闲状态也会被保留在线程池中的最小线程数量。当有新任务提交而当前运行的线程少于`corePoolSize`时,即便存在其他闲置线程,仍会创建新的工作线程来处理这些任务直到达到此数目为止[^2]。
```yaml
spring:
task:
execution:
pool:
core-size: 8
```
#### 最大线程数 `maxPoolSize`
最大线程数表示允许存在的最多线程总数,在超过核心线程之外的任务将会排队等待直至有足够的资源可用;但如果队列已满,则继续增加到不超过该上限的新线程去执行待处理的工作项。
```yaml
spring:
task:
execution:
pool:
max-size: 16
```
#### 队列容量 `queueCapacity`
用于设定阻塞队列的最大长度,即等待被执行但尚未分配给任何线程的任务数量。一旦超出这一界限且仍有未完成的任务到来,就会触发额外创建工作线程的过程(前提是总线程数还未触及`maxPoolSize`),否则抛出拒绝策略异常。
```yaml
spring:
task:
execution:
queue-capacity: 100
```
#### 线程存活时间 `keepAliveSeconds`
对于那些超过了核心大小(`corePoolSize`)以上的多余空闲线程而言,它们将在经过一段由本属性定义的时间间隔之后终止自己。这有助于回收不再必要的临时性扩展能力,从而节省系统资源开销。
```yaml
spring:
task:
execution:
keep-alive: 60s
```
#### 拒绝策略 `rejectedExecutionHandler`
当所有的线程都在忙碌并且队列也已经满了的时候,后续到达的任务将依据所选的拒绝策略来进行相应处置。常见的几种方式包括但不限于直接丢弃、引发异常或是交给调用者自行解决等不同行为模式的选择。
```java
@Bean(name = "taskExecutor")
public TaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 设置其他必要参数...
RejectedExecutionHandler handler = (r, e) -> {
throw new RejectedExecutionException("Thread Pool is Exhausted");
};
executor.setRejectedExecutionHandler(handler);
return executor;
}
```
阅读全文
相关推荐







