spring-boot 启动初始化 线程池
时间: 2023-07-06 11:40:54 浏览: 161
Spring Boot 启动时可以通过实现 `CommandLineRunner` 或 `ApplicationRunner` 接口来执行一些初始化操作,包括初始化线程池。
具体实现方法如下:
1. 定义一个线程池 bean
可以使用 Spring 提供的 `ThreadPoolTaskExecutor` 实现一个线程池 bean,如下:
```java
@Configuration
public class ThreadPoolConfig {
@Bean("myThreadPool")
public ThreadPoolTaskExecutor myThreadPool() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(100);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("myThreadPool-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
executor.initialize();
return executor;
}
}
```
2. 实现 `CommandLineRunner` 或 `ApplicationRunner` 接口
```java
@Component
public class MyCommandLineRunner implements CommandLineRunner {
@Autowired
private ThreadPoolTaskExecutor myThreadPool;
@Override
public void run(String... args) throws Exception {
// 初始化线程池
myThreadPool.execute(() -> {
// 线程池执行的代码
// ...
});
}
}
```
这样,在 Spring Boot 启动时,就会执行 `MyCommandLineRunner` 中的 `run` 方法,从而初始化线程池,并执行线程池中的任务。
阅读全文