springboot 使用自定义线程池
时间: 2023-07-06 20:30:55 浏览: 126
springboot中@Async默认线程池导致OOM问题
5星 · 资源好评率100%
好的,我可以回答你的问题。在 Spring Boot 中使用自定义线程池非常简单,只需要按照以下步骤即可:
1. 创建自定义线程池
```java
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolExecutor threadPoolExecutor() {
return new ThreadPoolExecutor(
5, 10, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(100),
new ThreadPoolExecutor.CallerRunsPolicy());
}
}
```
在这个例子中,我们创建了一个核心线程池大小为 5,最大线程池大小为 10,队列大小为 100 的线程池,并且使用了 CallerRunsPolicy 策略处理任务,当线程池满时,任务会在调用线程中执行。
2. 在需要使用线程池的地方使用 @Async 注解
```java
@Service
public class SomeService {
@Autowired
private ThreadPoolExecutor threadPoolExecutor;
@Async("threadPoolExecutor")
public void doSomething() {
// do something in a separate thread
}
}
```
在这个例子中,我们将 doSomething 方法标记为异步方法,并且指定了使用我们创建的 threadPoolExecutor 线程池来执行该方法。
这样,我们就可以在 Spring Boot 中使用自定义线程池了。希望对你有所帮助!
阅读全文