多线程异步处理请求
1、SpringAsyncConfig类
@Configuration
@Component
public class SpringAsyncConfig {
@Bean(name = "taskExecutor")
public Executor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(2);
taskExecutor.setMaxPoolSize(5);
taskExecutor.setQueueCapacity(10);
taskExecutor.setKeepAliveSeconds(10);
taskExecutor.setThreadNamePrefix("taskExecutor-thread-");
// 拒绝的处理策略,默认有abortPolicy、CallerRunsPolicy;默认为后者
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
// taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
// 调度器shutdown被调用时等待当前被调度的任务完成
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
// 空闲存活时间
taskExecutor.setAwaitTerminationSeconds(20);
taskExecutor.initialize();
return taskExecutor;
}
}
2、方法实现
```java
@Async("taskExecutor")
@Override
public void query() {
}
注意:
1、@Async(“taskExecutor”)用于 @Override方法上
2、需要在其他类的方法中,调用该类的@Async标记方法才会生效