一、Java NIO 教程
所有文章
https://www.cnblogs.com/lay2017/p/12901123.html
正文
Java NIO(New IO)是Java1.4开始提供的,区别于1.4之前的BIO,提供了不同的工作机制。
本文包含了Java NIO的基本概念
通道(channel)和缓冲区(buffer)
在标准的IO相关的API中,你通常和字节流和字符流打交道。但是在新的NIO中,你会和channel和buffer打交道。数据经常从channel读取到buffer,或者从buffer写入channel。
buffer <-read from- channel
buffer -write to-> channel
非阻塞IO
Java NIO是一个非阻塞IO。例如,一个线程从channel读取数据到buffer当中。在读取过程当中,这个线程还可以做别的事情而不是阻塞等待读取完成。一旦数据读取到了buffer当中,这个线程会继续做后续的处理。从buffer写入数据到channel也是一样的。
选择器
Java NIO包含了一个选择器的概念。顾名思义,选择器可以监控多个channel的状态变化,例如连接打开、数据达到等都在选择器的监控之下。因此,一个单一的线程就可以利用选择器监控多个channel这种机制来控制多个channel做数据传输,而不是传统的BIO那种,一个线程只能阻塞等待处理一个数据传输的操作。