老板叫你别阻塞了

Java 多线程系列文章第 4 篇。前端

继续我们的 Java 多线程系列文章,今天再讲讲概念,这篇应该是最后一篇基础概念,接下来就直接进入 Java 多线程主题了,在后面的文章里若是有概念须要单独拿出来说时再补充概念篇。后端

这篇文章主要讲讲阻塞(Blocking)非阻塞(Non-blocking)设计模式

上班后必学第一技能

之前在学校作项目,基本上都是独立开发,每一个人开发一个部分,以最小化沟通成本的方式划分工做量。到了职场,单纯的以最小化对接成原本安排工做是几乎不可能的,要考虑的因素变多了,各类跨小组、跨部门、甚至跨职场的工做,这就带来了沟通成本以及工做对接的各类阻塞问题。多线程

新人刚入职场的时候,对一切都不熟悉,在作一些小组之外的对接工做时,就会遇到种种问题,特别如今充斥着各类分布式架构,之前开发 Web 后台的同窗要会开发 JSP 页面,而如今先后端都分离了。设想一下这个场景。架构

小明是学习前端出身,刚开始步入职场,作的第一个需求就是登陆和注册界面,须要对接一个写后台的同事小东,小东负责开发登陆和注册的后台逻辑。小明开发了登陆界面,准备和小东对接联调登陆功能,这时小东回复说他恰好有生产 bug 在跟进,还没开发好,这时小明该怎么作?并发

有 2 种作法:异步

  1. 干等着小东开发好登陆后台,再和他联调。分布式

  2. 开发注册界面,开发过程当中再时刻询问小东登陆后台接口是否作完了,若是小东作完了,再去对接。学习

这 2 种作法的关键区别是什么呢?对于小东来讲,没啥区别,他能作的就是尽可能早点实现他的功能点。主要关注小明,第一种作法,小明作好了登陆界面,接着则等待小东的登陆后台接口,若是小东要开发一下午,那么小明就一下午啥事也不干,这种状况就是阻塞,小明的其余任务由于登陆界面没对接联调,而一直阻塞着;第二种作法,小明得知小东登陆后台接口还没实现,就着手先作注册界面的功能,而后每过一个小时跟小东确认一下登陆后台接口开发是否开发完成,直到小东开发完登陆后台接口,便开始对接联调,这种状况就是非阻塞,登陆界面没对接联调彻底不影响小明的开发进度,能联调的时候就联调,没法联调就完成手头上的其余任务。线程

可能有些同窗初入职场会犯这类错误,作的功能依赖别人,由于别人还没作完,而后就采用第一种作法,一直干等着,直到对方完成后再继续工做。偶尔偷偷懒还行,若是一直是这样的工做状态,对初入职场的同窗没有好处,并且这个被老板知道很很差。若是某一个需求点阻塞了,应该就先作手头上其余工做,若是手头上没其余工做,就跟老板反馈状况后领其余任务作,还要时刻去跟进阻塞的需求点的进度。

下面用流程图来描述这 2 个概念:

阻塞

阻塞

非阻塞

非阻塞

看了上面的图,是否是更加理解阻塞与非阻塞了呢?

老板说了算

若是你是老板,或者说是小明的领导,你会让小明怎么作?第一种作法仍是第二种作法呢?有支持第一种作法的,麻烦联系我,大家公司还招人么?

推荐阅读

吃个快餐都能学到串行、并行、并发

泡一杯茶,学一学同异步

进程知多少?

设计模式看了又忘,忘了又看?

后台回复『设计模式』能够获取《一故事一设计模式》电子书

以为文章有用帮忙转发&点赞,多谢朋友们!

LieBrother
相关文章
相关标签/搜索