鸟瞰 IO
志坚者,功名之柱也。登山不以艰险而止,则必臻乎峻岭。
1. 同步与异步
同步请求
方法 A 调用方法 B ,如果方法 B 的处理是同步的,那么在方法 B 处理完之前他不会通知方法 A 的,只有方法 B 处理完之后才会明确的通知方法 A。
异步请求
方法 A 调用 方法 B ,方法 B 的处理是异步的,那么方法 B 在接到请求后先给方法 A 一个返回值代表我已经接到请求了,然后异步的去处理,方法 B 处理完之后通过回调等方式再告诉方法 A。
综上所诉,同步和异步最大的区别就是被调用方的执行方式和返回时机。同步指的是被调用方做完事情之后再返回,异步指的是被调用方先返回,然后再做事情,做完之后再想办法通知调用方
2. 阻塞与非阻塞
生活常识举例
阻塞
比如你去蜜雪冰城买奶茶,如果你一直在等工作人员给你打奶茶期间什么都不做那么就是阻塞的状态
非阻塞
比如你去蜜雪冰城买奶茶,如果你在工作人员给你打奶茶期间又去做了别的事情比如去超时逛逛等那么就是非阻塞的状态
综上所诉,阻塞和非阻最大的区别就是在被调用方返回结果之前的这段时间内,调用方是否一直等待。阻塞指的是调用方一直等待别的事情什么都不做。非阻塞指的是调用方先去忙别的事情。
阻塞、非阻塞和同步、异步的区别
经过介绍阻塞与非阻塞和同步与异步其实强调的对象是不一样的。阻塞与非阻塞说的是调用者方,同步与异步说的是被调用方。
3. 图解 IO 分类
3.1 阻塞IO
[图片上传失败...(image-5840b7-1644456538196)]
3.1.1 同步阻塞
举例说明:
还是用去蜜雪冰城买奶茶的例子。在工作人员打好奶茶之前我们一直柜台等待,等着工作人员把奶茶打好,那么就是同步阻塞状态。
阻塞的工作模式 就是等待工作人员将奶茶打好。但是实际上在工作人员打好奶茶期间的时间段什么都没有做
3.2 非阻塞IO
[图片上传失败...(image-d8a4dc-1644456538196)]
3.2.1 同步非阻塞
举例说明:
还是用去蜜雪冰城买奶茶的例子。在工作人员打好奶茶之前我们可以做别的事情时不时的来看看奶茶打没打好,这就是同步非阻塞状态。
非阻塞的工作模式在工作人员打好奶茶期间的时间段什么都可以做
3.3 异步IO
[图片上传失败...(image-7cf46f-1644456538196)]
举例说明:
还是用去蜜雪冰城买奶茶的例子。在工作人员打好奶茶之前我们去干别的事情,等工作人员把奶茶打好之后机器叫号1153号客户取餐,这种就是异步ID。
网友评论