首先,想一想为什么使用异步线程?
举个例子:
当我们请求这个接口的时候,在接口调用了method这个方法
然而被调用的方法执行了一个线程睡眠三秒
因为method方法睡眠了三秒钟,所以这个接口响应的时间肯定是大于三秒。因为接口是从上往下执行的,首先会在控制台输出一个1,然后走到调用method方法的时候会休眠三秒,然后再在控制台输出一个二,再然后输出一个三,最后再在浏览器响应一个"我执行完了"。试着想一想,当用户发送这个请求的时候,需要等待服务器最低三秒的相应,是不是对用户体验非常不好?所以这里就需要使用异步进行处理了!
SpringBoot使用@Async注解进行线程异步
1.首先在启动类上加上@EnableAsync注解
2.然后在需要异步的类上加上@Component注解
3.最后在异步的方法加上@Async注解
这样就实现异步操作了,当用户调用test接口时,因为开启了异步所以执行流程为:
1.控制台输出1
2.走到调用method方法时,开启多线程进行异步,执行该方法
3.控制台输出3
4.浏览器响应显示"我执行完了"
5.执行完method方法,控制台打印2
ps:作者语言表达一般,还望读者海涵