1.创建线程池
@Configuration
public class AdminThreadPoolConfig {
@Bean(name = "adminThreadPoolExecutor")
public ThreadPoolTaskExecutor adminThreadPoolExecutor(){
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(20);
threadPoolTaskExecutor.setMaxPoolSize(80);
threadPoolTaskExecutor.setKeepAliveSeconds(30);
threadPoolTaskExecutor.setQueueCapacity(200);
threadPoolTaskExecutor.setThreadNamePrefix("ADMIN_");
threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return threadPoolTaskExecutor;
}
}
2.应用线程池处理异步任务
@Resource
private ThreadPoolTaskExecutor adminThreadPoolExecutor;
@Override
public void saveSysLog(SysLog sysLog) {
adminThreadPoolExecutor.execute(() -> {
// 执行保存系统日志业务代码
});
}