IO相关
BIO
是Blocking IO
的缩写,即同步阻塞I/O处理。因为socket.accept()/socket.read()/socket.write()
是同步阻塞的,所以在单线程下系统会阻塞,故使用多线程,但在多线程环境下,当活动连接不是特别高时,可以良好的使用,但当连接数多时,维护线程的成本就变得很大。所以面对十万,百万级连接时,需要一种更高效的I/O处理模型。
NIO
一个重要的特点是socket
主要的读、写、注册和接收函数在等待就绪阶段都是非阻塞的,真正的I/O操作是同步阻塞的。
BIO和NIO的区别
Non-blocking IO(非阻塞IO)
Buffer(缓冲区)
IO是面向流的,是直接将数据读取/写入到流中;而在NIO中,所有数据都是用缓冲区处理。
Channel (通道)
通道是双向的,可读也可写。而流是单向的。
Selector(选择器)
选择器用于使用单个线程处理多个通道。
AIO(异步IO)
异步非阻塞IO模型,是基于事件和回调机制实现的。
Last updated
Was this helpful?