springboot整合线程池的案例
时间: 2023-11-03 17:01:11 浏览: 90
springboot整合示例
好的,以下是一个简单的Spring Boot整合线程池的案例:
1. 在 pom.xml 文件中添加如下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-threadpool</artifactId>
</dependency>
```
2. 在 application.properties 文件中添加如下配置:
```
# 线程池配置
spring.task.execution.pool.core-size=10
spring.task.execution.pool.max-size=20
spring.task.execution.pool.queue-capacity=200
spring.task.execution.pool.keep-alive=30s
```
3. 创建一个线程池配置类 ThreadPoolConfig:
```
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 设置核心线程数
executor.setCorePoolSize(10);
// 设置最大线程数
executor.setMaxPoolSize(20);
// 设置队列容量
executor.setQueueCapacity(200);
// 设置线程池中线程的名称前缀
executor.setThreadNamePrefix("taskExecutor-");
// 设置线程空闲时间
executor.setKeepAliveSeconds(30);
// 设置线程池关闭时等待所有任务完成再继续销毁其他Bean
executor.setWaitForTasksToCompleteOnShutdown(true);
// 设置线程池中任务的等待时间,超过这个时间还未被执行就会被丢弃
executor.setAwaitTerminationSeconds(60);
// 设置拒绝策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
```
4. 创建一个测试类 TestController:
```
@RestController
public class TestController {
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@GetMapping("/test")
public String test() {
taskExecutor.execute(() -> {
// 线程执行的任务
System.out.println("Thread " + Thread.currentThread().getName() + " is running.");
});
return "success";
}
}
```
5. 启动应用,访问 http://localhost:8080/test,可以看到控制台打印出线程执行的日志。
这就是一个简单的Spring Boot整合线程池的案例。通过配置线程池,可以提高应用程序的性能和并发能力。
阅读全文