仅供初学者学习,资深猿猴请绕道
@Configuration
@EnableAsync //通知spring开启异步
public class AsyncConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
//创建线程池
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//设置线程池参数
taskExecutor.setCorePoolSize(10);
taskExecutor.setMaxPoolSize(30);
taskExecutor.setQueueCapacity(50);
//初始化线程池,使参数配置生效
taskExecutor.initialize();
//返回线程池对象
return taskExecutor;
}
}
要点解析:
1.@EnableAsync注解
2.implements AsyncConfigurer
3.重写getAsyncExecutor()方法
4.taskExecutor.initialize() 初始化线程池
@Controller
public class testController {
@Autowired
private testServer testServer;
@GetMapping("test")
@ResponseBody
public void print(){
testServer.method1(); //该服务的method1方法被@Async标注,所以被调用时,会从线程池中抽取一个线程专门处理该方法
System.out.println(Thread.currentThread().getName());
System.out.println("---------------");
testServer.method1();
}
}
testServer.method1如下:
@Service
public class testServer {
@Async
public void method1(){
// try {
// Thread.sleep(2000L);
System.out.println(Thread.currentThread().getName());
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
}