spring boot 线程池配置类,java架构师面试
以下是一个简单的Spring Boot配置类,用于配置应用程序的线程池:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
@Configuration
@EnableAsync
public class AsyncConfig {
@Bean(name = "taskExecutor")
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(4); // 核心线程数
executor.setMaxPoolSize(8); // 最大线程数
executor.setQueueCapacity(100); // 队列大小
executor.setKeepAliveSeconds(60); // 线程空闲时的存活时间
executor.setThreadNamePrefix("MyThread-"); // 线程名称前缀
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 拒绝策略
executor.initialize();
return executor;
}
}
这个配置类使用@Configuration
注解标注,表明它包含了配置项。@EnableAsync
开启了Spring的异步方法执行能力。taskExecutor()
方法创建了一个ThreadPoolTaskExecutor
实例,并设置了线程池的基本参数,如核心线程数、最大线程数、队列大小、存活时间和线程名称前缀。RejectedExecutionHandler
被设置为CallerRunsPolicy
,意味着如果线程池已关闭或者任务太多导致拒绝添加,那么在调用者的线程中直接运行被拒绝的任务。
评论已关闭