专栏首页LieBrother老板叫你别阻塞了

老板叫你别阻塞了

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

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

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

上班后必学第一技能

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

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

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

有 2 种做法:

  1. 干等着小东开发好登录后台,再和他联调。
  2. 开发注册界面,开发过程中再时刻询问小东登录后台接口是否做完了,如果小东做完了,再去对接。

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

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

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

阻塞

阻塞

非阻塞

非阻塞

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

老板说了算

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

本文分享自微信公众号 - LieBrother(gh_b6002a4cbc1f),作者:LieBrother

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 成熟的 Git 分支模型

    在学校不管是自己写课程设计还是给老师做项目,有 2 到 3 个人一起协作开发时就会使用 Git ,但是只是简单用了它所提供的代码协作功能,在学校的项目,比如课程...

    LieBrother
  • Linux 中不用再 ↑ ↓ 了

    Linux 下,如果要执行一条或多条之前输过的指令,要怎么处理?很多人会想到使用上下箭头去翻查历史输入的命令。这当然是可以了,除了这种方法,本文再介绍另外 5 ...

    LieBrother
  • Java 中的伪异步 IO

    上篇文章中 Java BIO 认识 介绍了 BIO 的弊端,就是服务端会对每个客户端的请求单独创建一个线程来处理,这样子很浪费资源,特别是高并发的时候,资源容易...

    LieBrother
  • 从 “ 短信劫持马 ” 来谈APP安全

    这种短信劫持木马的概念和新闻我想大家都应该接触过了,就不怎么说概念了,具体的可以搜一搜新闻,一抓一大把。

    网e渗透安全部
  • 基础知识 | 每日一练(125)

    小林:标准 C 库函数就有一个: rand()。你系统上的实现可能并不完美, 但写一个更好的并不是一件容易的事。网上有许多这方面的包: 老的可靠的包有 r250...

    闫小林
  • 《python算法教程》Day8 - 构建二分搜索树二分搜索树介绍二分搜索树创建代码

    今天是《python算法教程》的第8篇读书笔记,笔记的主要内容是构建二分搜索树。 二分搜索树介绍 若要对一组有序值中执行操作(如查找),二分搜索法是一个优秀的选...

    billyang916
  • 中科院智能乒乓球桌登上Nature:检测球速跟踪路径,准确找到击球位置

    球类比赛中,经常能看到基于高速摄像头的鹰眼或者VAR(视频助理裁判),这类技术的应用可以避免裁判主观判断引起的争议,提高竞技体育的公平性,但由于成本较高,在小级...

    大数据文摘
  • 网络编辑怎么策划制作专题

    对网络编辑来说,做专题是经常的事情,也是网站编辑们必须掌握的技能之一。网络编辑如何做专题。网络专题的具体定义,网络专题的形成,网络专题分类,好的网络编辑应具备编...

    貟王軍
  • Protobuffer 官方文档学习

    该文件的第一行指定您使用的是proto3语法:如果不这样做,协议缓冲区编译器将假定您正在使用proto2。 这必须是文件的第一个非空,非注释行。

    solate
  • Memcached使用总结之:使用Pyt

    Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache,

    py3study

扫码关注云+社区

领取腾讯云代金券