从零并发框架(三)异步转同步注解+字节码增强代理实现( 五 )
import com.github.houbb.sync.api.annotation.Sync;import com.github.houbb.sync.api.annotation.SyncCallback;/** * @author binbin.hou * @since 0.0.1 */public class UserService {String id = "";@Syncpublic String queryId() {System.out.println("开始查询");return id;}@SyncCallback(value = "http://kandian.youth.cn/index/queryId")public void queryIdCallback() {System.out.println("回调函数执行");id = "123";}}
测试类@Testpublic void queryIdTest() {final UserService proxy = SyncProxy.getProxy(new UserService());// 异步执行回调new Thread(new Runnable() {@Overridepublic void run() {try {System.out.println("开始异步执行回调");TimeUnit.SECONDS.sleep(2);proxy.queryIdCallback();} catch (InterruptedException e) {e.printStackTrace();}}}).start();String id = proxy.queryId();System.out.println("id: " + id);}
测试日志测试日志如下:
开始异步执行回调[DEBUG] [2020-10-09 17:37:56.066] [main] [c.g.h.l.i.c.LogFactory.setImplementation] - Logging initialized using 'class com.github.houbb.log.integration.adaptors.stdout.StdOutExImpl' adapter.[INFO] [2020-10-09 17:37:56.076] [main] [c.g.h.s.c.s.l.CountDownLatchLock.lock] - 进入等待 , 超时时间为:60000 , 超时单位:MILLISECONDS回调函数执行[INFO] [2020-10-09 17:37:58.019] [Thread-0] [c.g.h.s.c.s.l.CountDownLatchLock.unlock] - 执行 unlock 操作[INFO] [2020-10-09 17:37:58.019] [main] [c.g.h.s.c.s.l.CountDownLatchLock.lock] - 等待结果: true开始查询id: 123
非常的完美 。
小结好了 , 到这里我们就把上一节中的遗留的问题全部解决了 。
但是沉溺于 spring 多年的各位读者一定不满意 , 我也不满意 。
因为我们都知道 , 结合 spring 之后 , 调用可以变得更加简单 。
由于篇幅原因 , spring 整合实现部分将放在下一节 。 感兴趣的可以关注一下我 , 便于实时接收最新内容 。
觉得本文对你有帮助的话 , 欢迎点赞评论收藏转发一波 。 你的鼓励 , 是我最大的动力~
不知道你有哪些收获呢?或者有其他更多的想法 , 欢迎留言区和我一起讨论 , 期待与你的思考相遇 。
【从零并发框架(三)异步转同步注解+字节码增强代理实现】文中如果链接失效 , 可以点击 {阅读原文} 。
文章插图
- 图解|什么是高并发利器NoSQL
- 怎么理解分布式、高并发、多线程
- 写给大忙人看的,MyBatis日志如何做到兼容常用的日志框架
- 为什么 Django 框架持续统治着 Python 开发?
- 点云分类的自动放大框架 PointAugment
- 深入理解Logger日志——框架绑定原理
- 理解真实世界中 Go 的并发 BUG
- Go 中的 Goroutine 和其他并发处理方案的对比
- 迅易科技|| 拥抱“云”,更懂“云”,企业云采用框架落地实践
- 安卓|打破传统安卓系统框架!OriginOS的UI设计果然不俗