springboot异步调用是什么

  介绍

这篇文章主要介绍了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异步调用是什么内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

springboot异步调用是什么