springboot线程池配置
线程池配置
/**
* @Description: 异步处理线程池
* @Author: zq
* @Date: 2021/11/23 14:15
**/
@Configuration
@EnableAsync
public class TaskExecutorConfig {
/**
* 异步处理线程
* @return
*/
@Bean(name = "screenTaskExecutor")
public TaskExecutor taskExecutor() {
int coreThreadCount = 70;
int maxThreadCount = 100;
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 核心线程数:线程池创建时候初始化的线程数
executor.setCorePoolSize(coreThreadCount);
// 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
executor.setMaxPoolSize(maxThreadCount);
// 允许线程的空闲时间(秒):当超过了核心线程出之外的线程在空闲时间到达之后会被销毁
executor.setKeepAliveSeconds(600);
// 设置线程名称
executor.setThreadNamePrefix("Screen-");
// 设置拒绝策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
// 等待所有任务结束后再关闭线程池
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.initialize();
return executor;
}
}
异步使用
指需要在实现类加上@Async注解就可以了
@Override
@Async("screenTaskExecutor")
public void insert(RequestLog requestLog) {
this.requestLogMapper.insert(requestLog);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步