深入理解Java之NIO概述
概述
Java NIO是从Java1.4后加入的新型IO API。主要包括了以下的核心组件
- 通道
- 缓冲
- 选择器
Java NIO: 通道和缓冲
标准的IO API中,使用字节流和字符流。在NIO中使用通道和缓冲。数据总是从通道读取然后放入缓冲或者从缓冲读取写入通道

有几种通道和缓冲类型,以下是主要通道类型
FileChannel(文件通道)DatagramChannel(数据报通道)SocketChannel(套接字通道)ServerSocketChannel(服务器套接字通道)
这些通道覆盖了 UDP+TCP的网络IO以及文件IO
以下是和兴的缓冲实现
ByteBufferCharBufferDoubleBufferIntBufferLongBufferLongBufferShortBuffer
这些缓冲结构覆盖了基本数据类型
Java NIO: 非阻塞IO
Java NIO能够做到非阻塞IO。例如,一个线程能够从通道读取数据到缓冲。当通道读取数据到缓冲时,线程可以做其他事情。一旦数据读取完,线程能够继续执行它
Java NIO: 选择器
Java NIO包含了选择器的概念。选择器是一种对象,其能够监视多个通道的事件,因此单线程能够监控多通道的数据
下图是一个线程使用选择器处理三个通道

为了使用选择器,首先需要将选择器注册到通道,然后调用select()方法。这个方法会阻塞直到这些通道产生了任意一个准备好的事件。一旦方法返回了,线程可以处理这些事件