美文网首页
NIO和BIO比较

NIO和BIO比较

作者: lsh的学习笔记 | 来源:发表于2020-05-13 16:20 被阅读0次
BIO NIO
面向流(Stream Oriented) 面向缓冲区(Buffer Oriented)
阻塞IO(Blocking IO) 非阻塞IO(Non Blocking IO)
(无) 选择器(Selectors)
单向的 双向的
  1. BIO 以的方式处理数据,而 NIO 以块(缓冲区)的方式处理数据,块 I/O 的效率比流 I/O 高很多。
  2. Selector 能够检测多个注册的通道上是否有事件发生(注意:多个Channel以事件的方式可以注册到同一个Selector),如果有事件发生,便获取事件然后针对每个事件进行相应的处理。这样就可以只用一个单线程去管理多个通道,也就是管理多个连接请求。只有在连接/通道真正有读写事件发生时,才会进行读写,就大大地减少了系统开销,并且不必为每个连接都创建一个线程,不用去维护多个线程。避免了多线程之间的上下文切换导致的开销。

这里要区分连接和线程,连接相当于客户,线程相当于银行柜台接待人员,不能为每个客户都创建一个线程,即增加一个接待人员,因为不是每个客户每时每刻都有业务要办理。

BIO:(Blocking IO)

BIO

NIO (Non-Blocking IO)

NIO

Selector 一般称为选择器 ,也可以翻译为多路复用器

事件

连接:Connect(连接就绪)、Accept(接受就绪)、
读写:Read(读就绪)、Write(写就绪)

相关文章

网友评论

      本文标题:NIO和BIO比较

      本文链接:https://www.haomeiwen.com/subject/yfznnhtx.html