1.配置线程池
@Slf4j
@EnableAsync
@Configuration
public class DBExecutorConfig {
@Bean("dbExecutor")
public Executor taskExecutorInit(){
int coreSize = Runtime.getRuntime().availableProcessors();
log.info("init operator db executor . cpu thread size is {}", coreSize);
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(coreSize);
executor.setMaxPoolSize(coreSize * 2);
executor.setQueueCapacity(200);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("operator_db_executor");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
2.使用定义好的线程池
@Async("dbExecutor")
public Future<String> saveReqMsg(String request){
String msg= ……;
return new AsyncResult<>(msg);
}