springboot 线程池设置销毁线程池内线程执行完毕自动销毁
时间: 2024-07-24 18:01:08 浏览: 237
SpringBoot线程池详解含完整示例(值得珍藏)
Spring Boot 中可以使用 ThreadPoolTaskExecutor 或者 ThreadPoolTaskScheduler 来配置自定义线程池。如果你想让线程池内的线程在执行完任务后自动关闭,你可以通过以下步骤来实现:
1. 配置 ThreadPoolTaskExecutor 或 ThreadPoolTaskScheduler 的 `ThreadPoolExecutor` 对象,提供一个适当的 `ThreadPoolExecutor` 实例作为属性值。例如,在 Application 类中或配置类(如 AppConfig、BeanDefinitionRegistryPostProcessor 等)中:
```java
@Configuration
public class ThreadConfig {
@Bean(name = "customThreadPool")
public ThreadPoolTaskExecutor customThreadPool() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5); // 核心线程数
executor.setMaxPoolSize(10); // 最大线程数
executor.setQueueCapacity(50); // 容纳任务队列大小
executor.setThreadNamePrefix("CustomPool-"); // 线程名称前缀
executor.initialize(); // 初始化
executor.setExecuteAfterCompletion(true); // 设置为 true,任务完成后执行 shutdownNow() 函数
executor.setWaitForTasksToCompleteOnShutdown(true); // 关闭线程池时等待所有任务完成
executor.setTerminationEnabledPolicy(TerminatePolicy.DESTROY); // 设置策略为销毁线程
return executor;
}
}
```
2. 使用这个自定义的线程池 bean,比如在需要异步处理的地方注入它,并提交任务。
当你不再需要线程池的时候(如应用停止),Spring Boot 会按照你的设置自动销毁线程池内的线程。
阅读全文