java springboot 线程池
时间: 2023-11-01 07:58:41 浏览: 120
Java SpringBoot提供了丰富的线程池支持。通过使用ThreadPoolTaskExecutor类,可以很方便地创建和管理线程池。ThreadPoolTaskExecutor是在Java中ThreadPoolExecutor的基础上进行封装的。
在启动配置中,SpringBoot默认提供了一个线程池,即@Async。我们也可以自定义线程池来满足特定的需求。自定义线程池可以通过扩展ThreadPoolTaskScheduler和ThreadPoolTaskExecutor类来实现。
使用ThreadPoolTaskExecutor的示例代码如下:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
public class ThreadPoolConfig implements AsyncConfigurer {
@Bean("taskExecutor")
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10); // 设置核心线程数
executor.setMaxPoolSize(20); // 设置最大线程数
executor.setQueueCapacity(100); // 设置队列容量
executor.setKeepAliveSeconds(60); // 设置线程空闲时间
executor.setThreadNamePrefix("MyThreadPool-"); // 设置线程名前缀
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 设置拒绝策略
executor.initialize(); // 初始化线程池
return executor;
}
}
```
以上代码中,我们通过@Configuration注解将ThreadPoolConfig类标记为配置类,并实现了AsyncConfigurer接口。在taskExecutor()方法中,我们创建了一个ThreadPoolTaskExecutor对象,并设置了核心线程数、最大线程数、队列容量、线程空闲时间、线程名前缀和拒绝策略等属性。最后通过调用initialize()方法来初始化线程池。
在使用线程池的地方,可以通过@Autowired注解将taskExecutor注入到需要使用的类中,然后通过调用execute()方法来提交任务。
阅读全文