上一篇 <<<Linux系统的五种IO模型
下一篇 >>>BIO模型的缺陷
阻塞式io与非阻塞式io的区别
对比项 | BIO | NIO |
---|---|---|
概念 | 阻塞式(Blocking IO) | 非阻塞式(Non blocking IO) |
特点 | 当我们没有获取到数据的时候,整个应用程序会实现阻塞等待,不能实现做其他的事情。 | 不管是否有获取到数据,都必须立马获取到结果,如果没有获取数据的情况下,就会不断的重试获取数据 |
性能 | 面向流(Stream oriented),按字节流读取,效率较低 | 面向缓冲区(Buffer oriented),每次读取一整块,效率较高 |
历史 | 一开始就有 | Jdk1.4版本之后推出,支持了面向缓冲区、基于通道实现的io的方案 |
亮点 | 选择器(Selectors)—多路复用机制 | |
场景 | 悲观锁 | Cas(自旋锁)和乐观锁 |
推荐阅读:
<<<OSI七层模型与层上协议
<<<TCP的三次握手建立链接和四次挥手释放链接
<<<TCP、UDP及Socket代码示例
<<<Https的1.0、2.0协议及长短链接区别
<<<Linux系统的五种IO模型
<<<BIO模型的缺陷
<<<NIO模式的IO多路复用底层原理
<<<select、poll、epoll的区别
<<<Redis为什么单线程能够支持高并发
<<<Netty初识
<<<Netty的粘包和拆包问题分析
<<<粘包和拆包问题解决方案汇总
<<<序列化与反序列化知识点汇总
<<<MessagePack反序列化使用示例
<<<Marshalling在Netty中的使用