在Java中,NIO讀寫是I/O的基本過程。 從通道讀取:創建一個緩衝區,然後請求通道讀取數據。通道寫入:創建一個緩衝區,填充數據,並要求通道寫入數據。
讀寫操作的核心部件:
- Channels
- Buffers
- Selectors
Java NIO還有其它更多的組件和類,但是Channel,Buffer和Selector用作API的核心。
通道和緩衝區
讀取操作:
數據寫入操作:
通道列表:
在Java NIO中,主要使用的通道如下:
- DatagramChannel
- SocketChannelFile
- ChannelServer
- SocketChannel
上述通道涵蓋UDP(用戶數據報協議)+ TCP(傳輸控制協議)網絡I/O和文件I/O。
緩衝列表
- CharBuffer
- DoubleBuffer
- IntBuffer
- LongBuffer
- ByteBuffer
- ShortBuffer
- FloatBuffer
上述緩衝區覆蓋了通過I/O發送的基本數據類型:characters,double,int,long,byte,short和float。
選擇器
Java NIO提供了“選擇器”的概念。這是一個可以用於監視多個通道的對象,如數據到達,連接打開等。因此,單線程可以監視多個通道中的數據。如果應用程序有多個通道(連接)打開,但每個連接的流量都很低,則可考慮使用它。 例如:在聊天服務器中。下面來看看線程使用選擇器來處理3個通道,如下圖所示: