JAVA NIO—概述
一.简介
NIO(New IO)功能与标准IO类似,但弥补了标准IO的一些不足之处。NIO的核心组件包括Channel,Buffer和Selector。
二.NIO与标准IO的区别
1.标准IO面向流,NIO面向缓冲区
面向流的标准IO只能从流中一次读取一个或多个字节,无法在流中的数据中前后移动。如果需要在从流中读取的数据中前后移动,则需要先将其缓存在缓冲区中。而面向缓冲的NIO则可以根据需要在缓冲区中前后移动,在处理过程中更具灵活性。
2.标准IO阻塞,NIO非阻塞
标准IO的各种流都是阻塞的,当一个线程调用一个read()或write()时,该线程被阻塞,直到数据被读完或写完为止,在此期间,线程无法执行任何其他操作。而NIO的非阻塞模式允许线程从Cannel读取数据的同时执行其他操作,这样单个线程也可以管理多个输入和输出通道,但标准IO中单个线程只能管理单个输入或输出。
3.Selectors
Selectors是NIO独有的,它允许单个线程监视多个输入通道,这样单个线程就可以轻松管理多个通道。