关键抽象
1.Buffer缓冲区
NIO数据传递模型,是一个连续的内存区域、所有数据传承均通过buffer类处理;NIO提供了字符串、整形、字节、堆等多种缓冲区。
2.Channel(通道)
NIO把它支持的I/O对象抽象为Channel。它模拟了通信连接,类似于原I/O中的流(Stream),用户可以通过它读取和写入数据。目前已知的实例类有SocketChannel、ServerSocketChannel、DatagramChannel、FileChannel等。
3.SelectionKey事件模型
NIO的服务端通过一个专门的线程来处理IO相关事件,采用双向通道进行数据传输,而不是单向的通道,通过在通道上注册我们感兴趣的事件来完成一系列操作。
事件模型如下:
事件KEY |
备注 |
SelectionKey.OP_ACCEPT |
服务器接受客户端请求 |
SelectionKey.OP_CONNECT |
客户端连接服务器事件 |
SelectionKey.OP_READ |
读取事件 |
SelectionKey.OP_WRITE |
写入事件 |