Java NIO
Table of Contents

Java NIO 和 IO 的主要区别

NIO IO
面向缓存 面向流
非阻塞 阻塞
选择器

阻塞 IO 模型

io I/O操作采用同步阻塞模式,一个连接使用一个线程去处理。

这种模式的缺点很多:

非阻塞 I/O 模型

nio NIO 服务器可以使用一个线程处理多个连接。(实际上不会这么做)

NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。

NIO 的选择器采用了多路复用(Multiplexing)技术,可在一个选择器上处理多个套接字, 通过获取读写通道来进行 IO 操作。通过选择器,我们可以监听套接字的读写事件,一个线程可以同时处理多个连接。I/O多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降低了系统的维护工作量,节省了系统资源。