springboot设置线程池
时间: 2023-10-13 09:07:39 浏览: 144
在Spring Boot中,可以使用ThreadPoolTaskExecutor类来创建线程池。下面是一个示例:
首先,在application.properties文件中添加以下属性:
```
# 线程池核心线程数
threadpool.corePoolSize=5
# 线程池最大线程数
threadpool.maxPoolSize=10
# 线程池队列容量
threadpool.queueCapacity=100
```
然后,在配置类中注入ThreadPoolTaskExecutor,并设置其属性:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
public class ThreadPoolConfig {
@Value("${threadpool.corePoolSize}")
private int corePoolSize;
@Value("${threadpool.maxPoolSize}")
private int maxPoolSize;
@Value("${threadpool.queueCapacity}")
private int queueCapacity;
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.setThreadNamePrefix("MyThread-");
executor.initialize();
return executor;
}
}
```
在上面的代码中,ThreadPoolTaskExecutor的属性值将从application.properties文件中读取,并将线程池初始化。您还可以设置线程的名称前缀,以便在日志中更好地识别线程。
最后,您可以在需要使用线程池的地方注入ThreadPoolTaskExecutor,并使用execute方法提交任务:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
@Component
public class MyTask {
@Autowired
private ThreadPoolTaskExecutor executor;
public void doTask() {
executor.execute(() -> {
// 执行具体任务
});
}
}
```
在上面的代码中,MyTask类注入了ThreadPoolTaskExecutor,并使用execute方法提交任务。任务将由线程池中的一个线程执行。
阅读全文