介绍
这篇文章主要介绍了springboot异步调用是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
同步
程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。
异步
程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序,当一个异步过程调用发出后,调用者不能立刻得到结果。
同步代码服务层:
公共空白测试()抛出InterruptedException { thread . sleep (2000); for (int i=0;我& lt;1000;我+ +){ System.out.println (i=?+ i); } }
控制器层:
@GetMapping (“test") 公共字符串测试(){ 尝试{ thread . sleep (1000); System.out.println(“主线程开始“); for (int j=0;j & lt;100;j + +) { System.out.println (“j=?+ j); } asyncService.test (); System.out.println(“主线程结束“); 返回“async"; }捕捉(InterruptedException e) { e.printStackTrace (); 返回“fail"; } }
浏览器中请求<代码> http://localhost: 8080/测试代码>
控制台打印顺序:
- <李>主线程开始李> <>李打印j循环李> <>李打印我循环李> <>李主线程结束李>
异步代码
在服务层的测试方法上加上<代码> @Async 代码>注解,同时为了是异步生效在启动类上加上<代码> @EnableAsync 代码>注解
服务层:
@Async 公共空白测试()抛出InterruptedException { thread . sleep (2000); for (int i=0;我& lt;1000;我+ +){ System.out.println (i=?+ i); } }
控制器不变,启动类加上<代码> @EnableAsync 代码>:
@SpringBootApplication @EnableAsync 公开课AsyncApplication { 公共静态void main (String [] args) { SpringApplication.run (AsyncApplication.class, args); } }
再次请求打印顺序如下:
- <李>主线程开始李> <>李打印j循环李> <>李主线程结束李> <>李打印我循环李>
感谢你能够认真阅读完这篇文章,希望小编分享springboot异步调用是什么内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!