spring 异步编程之 @Async 的执行过程分析

本文详细分析了Spring中的异步编程机制,通过@EnableAsync和@Async注解实现异步方法。通过示例展示了不获取和获取异步方法结果时的不同行为。在深入代码调试中,揭示了异步方法的执行流程,包括CGLib动态代理、AOP拦截、线程池执行任务以及CompletableFuture的角色,阐述了如何通过CompletableFuture.get()获取异步结果及其内部的阻塞机制。
摘要由CSDN通过智能技术生成

spring异步编程,通过在配置类上添加@EnableAsync注解,并在需要进行异步执行的方法上添加@Async注解即可实现异步变成。先上一个例子

测试

a、不获取异步方法的结果

先不获取异步方法的结果,看代码执行结果

可以看到主线程一下在就运行完了,等了3秒过后异步方法也执行完了,说明main方法所在的主线程和异步方法不在同一个线程上执行

b、当获取异步方法的结果

运行结果

可以看到当主线程获取异步方法的结果的时候,主线程会被阻塞。

2、分析

debug调试一下上面的执行过程

a、先debug看一

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值