7. 说说你对 NIO 的认识?
NIO 的核心就是缓冲区(Buffer)、通道(Channel)和选择器(Selector)。
(1). 缓冲区(Buffer)就是用来存储数据的,八种基本类型只有 Boolean 类型没有提供对应的缓冲区。
- 核心属性:capacity,缓冲区的容量;limit,界线,缓冲区可用区域和已用区域的分界线;position,当前的位置。
- 核心方法:allocate,分配缓冲区;put,往缓冲区写数据;get,从缓冲区读数据;
(2). 通道(Channel)就是源位置与目标位置之间打开的连接,数据传输的通路。
- 核心实现类:FileChannel,操作文件的通道;DatagramChannel,通过 UDP 读取网络数据的通道;SocketChannel,通过 TCP 读取网络数据的通道;ServerSocketChannel,监听 TCP 连接的通道。
- 核心方法:transferTo/transferFrom,通道间的数据传输;write,将缓冲区数据写入通道;read,把通道数据读取到缓冲区。
(3). 选择器用于IO多路复用,将channel都注册到选择器上,它会监听哪些通道有事件发生,然后进行处理。