线程池配置类:
核心线程满了,接下来进队列,队列也满了,创建新线程,直到达到最大线程数,之后再超出,会进入拒绝策略
@Configuration
@EnableAsync
public class TaskPoolConfig {
@Bean("taskExecutor")
public Executor taskExecutro(){
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(10);//核心线程数
taskExecutor.setMaxPoolSize(20);//最大线程数
taskExecutor.setQueueCapacity(500);//最大等待队列数
taskExecutor.setKeepAliveSeconds(60);//除核心线程,其他线程保留时间
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//队列满之后,且创建的线程数大于最大线程数之后,直接使用调用任务的线程执行
taskExecutor.setThreadNamePrefix("taskExecutor--");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);//线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean
taskExecutor.setAwaitTerminationSeconds(60);//设置线程池中任务的等待时间,超过时间