![2cddc5ffb8559c7d3785e9e1a955d24d.png](https://i-blog.csdnimg.cn/blog_migrate/4443c3f2527700bbd4ce2ebc6f9b023e.png)
一 介绍
工作中经常涉及异步任务,通常是使用多线程技术,比如线程池ThreadPoolExecutor,但使用Executors容易产生OOM,需要手动使用ThreadPoolExecutor创建线程池;在springboot使用 @async 可以实现异步调用,配置线程池参数,可以简单的实现多线程的线程池效果,从而简化开发,避免OOM;
二 异步调用
2.1无返回异步
我们知道同步执行就是按照代码的顺序执行,而异步执行则是无序,在springboot中使用实现异步调用函数非常简单,首先在启动类上加上@EnableAsync
注解;
/**
* @Author lsc
* <p> </p>
*/
@SpringBootApplication
@EnableAsync
public class AsyncRunApp {
public static void main(String[] args) {
SpringApplication.run(AsyncRunApp.class, args);
}
}
其次,在函数上标上@sync
注解,表示异步调用
@Async
public void taskOne() throws Exception {
System.out.println("任务一");
}
@Async
public void taskTwo() throws Exception {
System.out.println("任务二");
}
测试代码