spring-boot异步线程池
程序员文章站
2022-05-01 14:19:18
...
@Bean("taskExecutor")
public Executor taskExecutor(){
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//配置核心线程数
taskExecutor.setCorePoolSize(100);
//配置最大线程数
taskExecutor.setMaxPoolSize(500);
//配置队列大小
taskExecutor.setQueueCapacity(200);
//线程池维护线程所允许的空闲时间
taskExecutor.setKeepAliveSeconds(60);
//配置线程池中的线程的名称前缀
taskExecutor.setThreadNamePrefix("async-service-");
//当调度器shutdown被调用时等待当前被调度的任务完成
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
//等待时长
taskExecutor.setAwaitTerminationSeconds(60);
/**
* 第一种AbortPolicy:不执行新任务,直接抛出异常,提示线程池已满
* 第二种DisCardPolicy:不执行新任务,也不抛出异常
* 第三种DisCardOldSetPolicy:将消息队列中的第一个任务替换为当前新进来的任务执行
* 第四种CallerRunsPolicy:直接调用execute来执行当前任务
*/
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
taskExecutor.initialize();
return taskExecutor;
}
上一篇: spring-boot开启异步线程
下一篇: java 获取当前执行项目的路径