![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNkBjNiJTMxgDZ0ADMxQDZzkzYwY2NyQWNjNTYidjZi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
介绍
同步调用
先来演示一下什么是同步调用
测试方法
输出如下
doTaskOne start 1566121320372doTaskOne end 1566121321373doTaskTwo start 1566121321373doTaskTwo end 1566121322374
可以看到方法一执行完毕,方法二才会执行
异步调用不返回值
1.Spring Boot启动类上加@EnableAsync注解
@[email protected]
2.方法上加@Async注解
测试类如下
最后的TimeUnit.SECONDS.sleep(3)保证主线程存活,不然主线程执行完看不到子线程输出的end,输出如下
doTaskOne start 1566121729140doTaskTwo start 1566121729140doTaskOne end 1566121730140doTaskTwo end 1566121730140
看输出,2个任务同时启动。2个没有关系的任务以前需要2s才能执行完,异步后1s就能执行完,效率提高。
异步调用返回值
测试类
输出如下
doTaskTwo start 1566122170684doTaskOne start 1566122170684doTaskTwo end 1566122171684doTaskOne end 1566122171684taskOne returntaskTwo return
Future类的get方法是阻塞方法,没有结果返回时会一直阻塞。