提供一个ThreadPoolTaskExecutor的配置
时间: 2023-10-12 13:10:33 浏览: 76
ThreadPoolTaskExecutor 是 Spring 框架提供的一个线程池实现类,可以用来管理线程池并执行异步任务。
以下是一个常见的 ThreadPoolTaskExecutor 配置:
```java
@Configuration
@EnableAsync
public class ThreadPoolConfig {
@Bean("taskExecutor")
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10); // 核心线程数
executor.setMaxPoolSize(50); // 最大线程数
executor.setQueueCapacity(100); // 队列容量
executor.setKeepAliveSeconds(60); // 线程空闲时间
executor.setThreadNamePrefix("taskExecutor-"); // 线程名前缀
executor.setWaitForTasksToCompleteOnShutdown(true); // 等待所有任务执行完再关闭
executor.setAwaitTerminationSeconds(60); // 等待关闭的时间
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 拒绝策略
return executor;
}
}
```
其中,@EnableAsync 注解表示启用 Spring 的异步任务支持。@Bean("taskExecutor") 注解表示创建一个名为 "taskExecutor" 的线程池 Bean。
通过 executor 的各种 set 方法来设置线程池的属性,比如核心线程数、最大线程数、队列容量等。其中,setRejectedExecutionHandler 方法设置拒绝策略,这里使用了 CallerRunsPolicy 策略,表示在主线程上执行被拒绝的任务。
最后,将配置类放在 Spring 容器中即可使用该线程池来执行异步任务。
阅读全文