1、线程池配置类
@Slf4j
@Configuration
public class PcSpaceThreadConfig {
private static final int MAX_POOL_SIZE = 50;
private static final int CORE_POOL_SIZE = 25;
private static final int QUEUE_CAPACITY = 25;
private static final int KEEP_ALIVE_SECONDS = 300;
@Bean("pc_spaceExecutor")
public ThreadPoolTaskExecutor getAsyncExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
/** 核心线程数(默认线程数) */
taskExecutor.setCorePoolSize(CORE_POOL_SIZE);
/** 最大线程数 */
taskExecutor.setMaxPoolSize(MAX_POOL_SIZE);
/** 缓冲队列大小 */
taskExecutor.setQueueCapacity(QUEUE_CAPACITY);
/** 允许线程空闲时间(单位:默认为秒) */
taskExecutor.setKeepAliveSeconds(KEEP_ALIVE_SECONDS);
// 线程池对拒绝任务的处理策略
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
taskExecutor.initialize();
return taskExecutor;
}
}
2、线程池的使用
@Autowired
@Qualifier("pc_spaceExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;