Spring 中存在一个 AsyncConfigurer 配置异步线程池的接口,源码如下:
public interface AsyncConfigurer {
@Nullable
default Executor getAsyncExecutor() {
return null;
}
@Nullable
default AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
}
我们可以实现此接口,重新getAsyncExecutor()方法,进行线程池的配置。
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//核心线程数
executor.setCorePoolSize(10);
//最大线程数
executor.setMaxPoolSize(30);
//线程队列限制
executor.setQueueCapacity(1000);
//初始化
executor.initialize();
return executor;
}
}
@EnableAsync 添加此注解Spring 就会开启异步可用,在要使用异步调用的服务类添加@Async 注解,Spring就会采用异步方式调用。
具体实现代码这里就不写了,自己动手试试吧。