1.在启动类/配置类上添加@EnableAsync注解,表示支持异步方法调用;
2.在需要异步调用的方法上添加@Async注解,表示该方法为异步方法,即该方法和调用者不在一个线程中进行。
@Configuration
@EnableAsync // 加在配置类或者启动类上
public class ExecutorConfig {
@Bean
public Executor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//配置核心线程数
executor.setCorePoolSize(1);
//配置最大线程数
executor.setMaxPoolSize(2);
//配置队列大小
executor.setQueueCapacity(3);
//配置线程池中的线程的名称前缀
executor.setThreadNamePrefix("test-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//执行初始化
executor.initialize();
return executor;
}
}
// 绑定到asyncExecutor线程池中执行,也可以不用线程池
@Async("asyncExecutor")
public void executeAsync() {
// todo......异步执行
}