setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞

同步/异步、阻塞/非阻塞 说的是一回事儿吗?

同步/异步、阻塞/非阻塞 你能通俗易懂的讲清楚吗?

Java 中的 BIO、NIO、AIO 你了解吗?

Socket 编程你还会吗?

Linux 操作系统的 IO 模型你能讲讲吗?

01. 生活中的同步/异步、阻塞/非阻塞


70e5b441e67836a3a10b2d8e7da11bd7.png

程序猿有了孩子之后,从原来的劈柴喂马周游世界,就变成了撸码喂娃家里蹲蹲。

说起喂娃,不得不提小猿给孩子热奶的事情。给孩子喂奶,有些时候喝着喝着就凉了,要时不时给孩子热一热。

9fe96d0b114feb0044a363713e61dc08.png

起初,由于带娃没有经验,小猿直接把奶瓶放进一个自制的温奶器(盛满开水的大碗里),然后一直摸着奶瓶来确定是否热好了。

1. 对于温奶器来说,它是「同步」的;

2. 由于热奶的时候,小猿其它的什么事儿都干不了,小猿被温奶器「阻塞」;

3. 这种场景称之为「同步阻塞」。

不过,在小猿热奶时,孩子嗷嗷待哺,小猿也开始涨姿势啦,热奶的空档开始去抚慰孩子饥饿的心灵,时不时的去摸一下奶瓶有没有热好。

1. 对于温奶器来说,它是「同步」的;

2. 由于小猿在热奶的空档,可以抚慰孩子饥饿的心灵,小猿被温奶器「非阻塞」;

3. 这种场景称之为「同步非阻塞」。

不过自制的温奶器确实不太智能,尤其是当老人一人在家带娃的时候,于是寻找智囊团寻求高招。

598ba6c39b099c5f30e6b9f436bd5ad7.png

这不,在邻居萝卜妈妈的建议下,购置了一款既能控制温度,又能响铃提醒的智能温奶器。小猿把奶瓶放进去,设置好温度,奶热好后会自动响铃提醒,但是小猿还是习惯性的直勾勾的盯着温奶器,你说小猿是不是有点犯傻。

1. 对于温奶器来说,奶温好后会通知小猿,它是「异步」的;

2. 小猿还是被温奶器「阻塞」;

3. 这种场景称之为「异步阻塞」。

不过,小猿在怎么犯傻充楞,也抵不住孩子因饥饿而哇哇的哭声。于是小猿在智能温奶器温奶的空档,便开始跟孩子做小游戏、读读小猪佩奇,当听到智能温奶器的响铃提醒时,再去拿温好的奶喂孩子。

1. 对于温奶器来说,奶温好后会通知小猿,它是「异步」的;

2. 由于小猿在热奶的空档,可以陪孩子做游戏、读小猪佩奇,小猿被温奶器「非阻塞」;

3. 这种场景称之为「异步非阻塞」。

我们把小猿视作调用者,把温奶器视作被调用者,进行简单归档一下。

同步、异步说的是温奶器(被调用者)。同步指的是被调用者做完事情之后再返回的机制;异步指的是被调用者先返回,然后再做事情,做完之后再通知调用者的机制。

阻塞、非阻塞说的是小猿(调用者)。阻塞指的是调用者在等待消息时,其它什么都不做;非阻塞指的是调用者在等待消息时,去干了别的事情。

02. 业务研发中的同步、异步


7f5db53a7ae503d3bb85d904b42f63a9.png

不可缺失的注册场景。在注册环节,要进行姓名、证件号码的二要素实名认证,要等待实名认证 API 的响应结果,才能进行后续的注册环节,所以此种业务场景可以认为是同步设计。

3d7d10b5a5eeba15d07e4ae4840138c1.png

如果做过支付相关的业务时,充值、提现等等很多涉及到 Money 的业务场景,API 调用时一般会返回处理中,那么调用者可以去做别的事情,可以依赖于相应的查询接口进行轮询;不过被调用者在业务处理完成后,一般也会再通知调用者处理之后的结果。此种业务场景的设计,可以认为是异步设计。

简单归纳一下,纯属一家之言,不喜也请喷。

同步设计,Moudle1 调用 Moudle2,Moudle2 的处理是同步的,在处理完之前不会告诉 Moudle1,只有处理完之后才会告诉 Moudle1。

异步设计,Moudle1 调用 Moudle2,Moudle2 的处理是异步的,Moudle2 在接到请求后,先告诉 Moudle1 已经接到请求,然后异步去处理,处理完再通过通知的方式通知 Moudle1。

03. Java 中的 IO(BIO、NIO、AIO)


IO 顾名思义就是 input(输入),output(输出)。

在业务研发中,只要定义好输入输出,其它一切只是时间问题 —— 个人愚论。

在 Java 中 IO 模型有三种,分别是 BIO(同步阻塞 IO)、NIO(同步非阻塞 IO)、AIO(异步非阻塞 IO)。

聪明的你肯定会发现,在 Java 中的确是不存在,像小猿那种傻傻盯着智能温奶器,其它啥事儿也不干的异步阻塞的傻模型。

7becf07b17a172063057a358db3cbed5.png

那么,Java 中的 BIO、NIO、AIO 说的是什么呢?先画个脑图给大家,下期我们将结合代码进行讲解。

更多精彩,咱们且听下次分解。

以上属于一家之言,如果你若喜欢,欢迎转发或在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

md5会重复吗_如何优雅地处理重复请求(并发请求)

点击上方“服务端思维”,选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」利用唯一请求编号去重你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重——只要这个唯一…

计算机二级excel数据有效性,原来Excel数据有效性还可以这样做——制作二级下拉菜单...

很多时候,在进行设置数据有效性时,我们希望可以根据前一单元格的内容,使用动态的数据选项。如下图为一个员工信息表,现希望在F列制作下拉列表,下拉列表的内容根据E列输入的省份变化而变化,如在E2单元格中输…

win7系统安装信息服务器不可用怎么办,Win7系统下iis服务器应用程序不可用怎么办?...

Win7系统用户在使用电脑系统时都有自带可以方便用户们搭建网站的iis服务器。不过也有Win7系统用户反映在电脑系统里添加或删除组件时iis服务器无法添加,还弹跳出了应用程序不可用的提示窗口,这使用户非常苦恼,那么Win7系统下iis服务器应用程序…

++ 多核cpu 并行_一文读懂什么是多核并行计算(三)

导读:面向应用工程师的商业软件咨询、自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容。(三)如何实现多核并行计算呢?了解了多核、多Machine、多Rack后,我可以看一下软件(程序)是如何对这些资源进…

服务器放行6in4协议,最简单的接入IPv6网络的方法 – 6in4隧道

很多大学的校园网启用了IPv6,并且建设了很多IPv6专享的资源。毕业离校,由于现在的网络运营商绝大部分尚未支持IPv6,所以那些资源也就离我们远去了。机缘巧合之下,我知道了,原来我们可以这样接入IPv6网络。目前接入IPv6…

梦幻群侠传5帮派修炼_梦幻西游:2020年十大更新回顾 法连不秒空和连续战斗修复...

今年梦幻西游有过很多重大的维护更新,其中不少更新都对玩家产生中重大的影响,比如说法术连击第二下不会秒空气,以及副本的迭代等等,今天就来盘点下2020年梦幻西游的十大更新!一、各类副本优化迭代今年优化了多个副本,如…

前端图片上坐标连线_前端图形学(十三)——弹跳运动的深入之傲娇的小球

欢迎来到【畅哥聊技术】前端图形学相关技术文章,更多精彩内容持续更新中,敬请关注。前面我们说到了小球的弹跳运动,通过一个方向的加速度和摩擦力去影响小球的动画,其目标点也是一个固定不变的,似乎有些单调。那么我们今天继续小球…

服务器微信了早上好,微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短...

原标题:微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短嘀嘀嘀嘀,我的短信到啦。用关心方式,要你多注意休息;用体贴方式,要你轻松而快乐;用祝福方式,要你一切都过的好&#xff…

c语言调用createthread线程的头文件_易语言API多线程总汇

【thread】 即,线程,是进程中某一顺序的控制流,在单个程序中同时运行多个线程完成不同工作,称为多线程。易语言多线程理解:进程是一个可执行程序,由私有虚拟地址空间、代码、数据和其它操作系统资源组成&am…

oracle varchar默认长度_面试官:如何精确计算mysql数据库索引长度?

概述我们知道MySQL Innodb 对于索引长度的限制为 767 字节,并且UTF8mb4字符集是4字节字符集,则 767字节 / 4字节每字符 191字符(默认索引最大长度),所以在varchar(255)或char(255) 类型字段上创建索引会失败,提示最大索引长度为7…

android things 系统镜像文件_开始菜单搬家!Win 10X 系统 UI 全部重做,明年初就能用上...

不知道老伙计们还记不记得,小淙曾经报道过三次,关于微软新系统 Windows 10X 的消息。当时很多老伙计感觉太遥远,或者觉得它难以激起波澜。但现在看来微软布局已久,是铁了心要搞新系统了。因为 Windows 10X 系统已经准备好交付&…

通达信公式大全_通达信MACD金叉的选股公式大全

公式来源于网络&#xff0c;我只是用其中一个&#xff0c;一起复制来了&#xff0c;有需要的自取吧。1、0轴上方第一次金叉选股公式&#xff1a;DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);DEA : EMA(DIFF,9);MACD : 2*(DIFF-DEA);xg:cross(diff,dea) and dea>-1.0 and dea<0.5…

mysql 时间差_后端从mysql取值返回0时区时间数据的问题

近日搞一个B/S项目&#xff0c;前端页面时间字段总是显示格林威冶时间&#xff0c;也就是0时区的时间&#xff0c;比北京时间差了8个小时。打开后台的数据库&#xff0c;在workbench中查询&#xff0c;结果显示的时间格式正常&#xff0c;为当前北京时间。该时间字段是在往数据…

abap视图字段限制_【第八章】视图

上一级目录&#xff1a;Mosh_完全掌握SQL课程_学习笔记 其它相关&#xff1a;数据概要【第八章】视图Views (时长18分钟)1. 创建视图Creating Views (5:36)小结就是创建虚拟表&#xff0c;自动化一些重复性的查询模块&#xff0c;简化各种复杂操作&#xff08;包括复杂的子查询…

生活质量衡量系统_数据质量与数据质量八个维度指标

数据质量与数据质量八个维度指标数据的质量直接影响着数据的价值&#xff0c;并且直接影响着数据分析的结果以及我们以此做出的决策的质量。质量不高的数据不仅仅是数据本身的问题&#xff0c;还会影响着企业经营管理决策&#xff1b;错误的数据还不如没有数据&#xff0c;因为…

linux的内置的账户_6 款面向 Linux 用户的开源绘图应用程序

既然你是一名 Linux 用户&#xff0c;为什么不关注一下开源绘图应用程序呢&#xff1f;-- Ankush Das(作者)小时候&#xff0c;当我开始使用计算机(在 Windows XP 中)时&#xff0c;我最喜欢的应用程序是微软的“画图”。我能在它上面涂鸦数个小时。出乎意料&#xff0c;孩子们…

ieda ts文件报错_使用TS开发微信小程序(1):环境搭建——VSCode+TS

前言现在接到小程序需要改版的需求&#xff0c;由于使用Ionic的经验&#xff0c;希望以后能够统一开发语言降低开发成本&#xff0c;所以想使用TypeScript进行开发。开发前准备工作先是看官网&#xff0c;在微信小程序的官方开发文档中找到TypeScript相关的支持介绍。微信官网描…

cad统计多条线段总长度插件_超级实用CAD技巧应用汇总!技巧大全、插件合集、快捷键合集等...

超级实用CAD技巧应用汇总&#xff01;技巧大全、插件合集、快捷键合集等各位朋友&#xff0c;CAD福利来啦&#xff01;超级实用CAD技巧应用汇总&#xff0c;千万不能错过&#xff01;有技巧大全、插件合集、快捷键合集、字体大全、常用图库大全、常见问题及解决办法、版本转换&…

局部放大_Origin教程|巧用ZOOM功能做数据对比和快速绘制局部放大图

微信公众号&#xff1a;有宝物的柜子编辑&#xff1a;落水无波2020-06-28 原创有时候在分析一些数据时&#xff0c;既需要观察整体又需要局部观测&#xff0c;那么怎么才能做到同时查看呢&#xff0c;就类似上面这样。这样就很容易的去发现有没有峰位偏移&#xff0c;同时查看与…

操作多台_一支热电偶能否连接多台显示仪表

一支热电偶能否连接多台显示仪表&#xff0c;这个问题常有人提出&#xff0c;因为随着DCS系统的应用及对管理工作的要求&#xff0c;需要对一个信号在多处显示也是常有的事。一支热电偶能否连接多台显示仪表或DCS系统板卡&#xff0c;连接后能否保证测量精度&#xff0c;这是人…