前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手写中间件之——并行框架(4 相互依赖模型的建立)

手写中间件之——并行框架(4 相互依赖模型的建立)

作者头像
天涯泪小武
发布2020-02-14 15:05:30
7210
发布2020-02-14 15:05:30
举报
文章被收录于专栏:SpringCloud专栏SpringCloud专栏

建议学习时,打开代码https://gitee.com/tianyalei/asyncTool  对着代码看。

上一篇主要讲了如何实现异步回调,简单回忆一下是如何实现的。java的future的get方法是同步阻塞的,无法达到任务完成后主动回调的目的。netty的future是可以做到回调的,通过addListener的方式,但是为什么addListener后就能回调了,也是通过封装执行单元和回调类的方式,即上一篇的wrapper模式。

如果比较难以看懂,最好是自己手写一下,创建wrapper,将执行单元和回调类都包装到wrapper里。

这一篇依旧是有点难度的,我们主要学习多个执行单元之间的相互依赖模型是如何建立并工作的。

还拿这个图举例,可以看到每个执行单元彼此间是有相互依赖关系的。

如图1,B必须在A完成后才能执行,C必须在B完成后才能执行。也就是B depends A,他们之间有个depends的关系,而且是强依赖。

如图4,A依赖于B、C,这里就分不同情况了。第一种情况,A强依赖于B、C,必须B and C都完成后才能执行A;第二种情况,A强依赖于B、弱依赖于C,如果仅仅是C完成了,B还未完成,那么A不会执行,必须B完成了,A才会执行(此时就不在乎C是否完成了);第三种情况,A弱依赖于B、C,无论B或C中的哪个先执行完,A都会开始执行,而不去等待其他的依赖项。

猛的看起来,要实现这有点难,其实等会经过我仔细分析后,就会发现并不难。

从上一

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档