IO相关

BIOBlocking 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?