文档章节

老板叫你别阻塞了

LieBrother
 LieBrother
发布于 08/08 07:40
字数 1204
阅读 1746
收藏 5

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

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

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

上班后必学第一技能

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

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

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

有 2 种做法:

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

  2. 开发注册界面,开发过程中再时刻询问小东登录后台接口是否做完了,如果小东做完了,再去对接。

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

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

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

阻塞

阻塞

非阻塞

非阻塞

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

老板说了算

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

推荐阅读

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

泡一杯茶,学一学同异步

进程知多少?

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

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

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

LieBrother

© 著作权归作者所有

LieBrother
粉丝 84
博文 45
码字总数 68752
作品 0
深圳
程序员
私信 提问
加载中

评论(4)

z
zb1511772893964
实际上,所有逻辑中都需要有中断处理,产品来中断,执行流程却不是以前的执行流程了。想法很好,现实很骨感,能用图来描述工作流程细节这样简单的话估计找个人不是做项目的。
JavaGG
JavaGG
都不是好方法。。。应该把并后端的接口写清楚,大家按接口开发就好,前端可以自己模拟请求,后台也可以自己模拟前端的请求,这样到联调时一下就过了
f
freezingsky
都能让新手做后台, 说明后台的重视程度就是可用. 那么,只要代码规范,功能正常, 我觉得就不错了!
AutoPlus
AutoPlus
JDBC 说:老板,你说了不算呀
区分同步异步阻塞非阻塞区别

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。 同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous commu...

superPershing
2017/02/16
0
0
如何理解 阻塞 非阻塞 同步 异步 的区别?

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。 1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous c...

哲别0
2018/05/11
15
0
同步,异步,阻塞和非阻塞的理解

概念 同步是两个对象之间的关系,而阻塞是一个对象的状态。 同步,异步 访问数据的方式,同步需要主动读写数据,在读写数据的过程中还是会阻塞;异步只需要I/O操作完成的通知,并不主动读写数...

好铁
2016/08/28
75
0
如何理解阻塞和非阻塞同步和异步

同步与异步 同步和异步关注的是消息通信机制,所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由调用者主动等待这...

清风与你
2017/04/10
0
0
同步与异步、阻塞与非阻塞

这篇文章旨在帮助大家了解同步与异步、阻塞与非阻塞的同时明白其中的区别。 首先,同步 (Sync),是指当我们需要调用某一块具体的方法的时候在返回方法的执行结果之前程序一直处于等待状态,但...

唐正汉
2017/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
533
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
31
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
16
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
47
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
56
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部