本篇文章给大家带来的内容是关于springboot异步调用的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
同步
程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。
异步
程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序,当一个异步过程调用发出后,调用者不能立刻得到结果。
同步代码
Service层:
public void test() throws InterruptedException {
Thread.sleep(2000);
for (int i = 0; i <p>Controller层:</p><pre class="brush:php;toolbar:false;"> @GetMapping("test")
public String test() {
try {
Thread.sleep(1000);
System.out.println("主线程开始");
for (int j = 0; j <p>浏览器中请求 <code>http://localhost:8080/test</code><br> 控制台打印顺序:</p><ol>
<li>主线程开始</li>
<li>打印j循环</li>
<li>打印i循环</li>
<li>主线程结束</li>
</ol><h2>异步代码</h2><p>在Service层的test方法上加上<code>@Async</code>注解,同时为了是异步生效在启动类上加上<code>@EnableAsync</code>注解<br> Service层:</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill11083" title="Java调试"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20dbae7c507.jpg" alt="Java调试" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill11083" title="Java调试" class="overflowclass">Java调试</a>
<p class="overflowclass">通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。
术语注解
JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议)
remote JVM:远程 Java 虚拟机
step through code:代码单步调试(步入 / 步过 / 步出调试)
inspect variables:变量查看 / 变量检视
stac</p>
</div>
<a rel="nofollow" href="/xiazai/skill11083" title="Java调试" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div><pre class="brush:php;toolbar:false;"> @Async
public void test() throws InterruptedException {
Thread.sleep(2000);
for (int i = 0; i <p>Controller不变,启动类加上<code>@EnableAsync</code>:</p><pre class="brush:php;toolbar:false;">@SpringBootApplication
@EnableAsync
public class AsyncApplication {
public static void main(String[] args) {
SpringApplication.run(AsyncApplication.class, args);
}
}
再次请求打印顺序如下:
- 主线程开始
- 打印j循环
- 主线程结束
- 打印i循环










