介绍
同步调用
先来演示一下什么是同步调用
测试方法
输出如下
doTaskOne start 1566121320372doTaskOne end 1566121321373doTaskTwo start 1566121321373doTaskTwo end 1566121322374
可以看到方法一执行完毕,方法二才会执行
异步调用不返回值
1.Spring Boot启动类上加@EnableAsync注解
@SpringBootApplication@EnableAsync
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方法是阻塞方法,没有结果返回时会一直阻塞。