一、BIO&NIO&AIO
想要容易记住三种IO,先明确一下同步和异步、阻塞和非阻塞。
下面以饭馆吃饭为类比例子,帮助记忆
阻塞和非阻塞
点餐之后一直在出餐窗口等着就是阻塞,坐到位置上饭菜做好之后有通知就是非阻塞。
对应到数据
阻塞:没有数据写过来时,读操作就会阻塞,直到有数据。缓冲区满时,写操作也会阻塞。
非阻塞:碰到阻塞的两种情况,直接返回。
同步和异步
饭菜做好之后服务员给端到桌上是异步,自己去窗口端就是同步。
对应到数据
同步:数据就绪(到达socket缓冲区)后需要自己(自己线程\程序)去读就是同步。
异步:数据就绪读好再回调给程序。
通过以上知识我们再来记忆三种IO
BIO(block):同步阻塞IO。
NIO(non-block):同步非阻塞IO。
AIO(asynchronous):异步非阻塞IO。
二、未完待续
参考:傅健老师极客时间专栏《Netty 源码剖析与实战》