Java NIO Channel 核心用法總結。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整總結正文
本文實例總結了 Java 中 Channel 用法。分享給大家供參考。詳細分析如下:
- Channel 介面定義:
public interface Channel {
public boolean isOpen();
public void close() throws IOException;
}
- 常見 Channel 型別:FileChannel、SocketChannel、ServerSocketChannel、DatagramChannel。
FileChannel 透過 RandomAccessFile、FileInputStream、FileOutputStream 的 getChannel() 取得。
SocketChannel、ServerSocketChannel、DatagramChannel 透過 open() 及 connect/bind 建立。
- Scatter/Gather 需使用 ByteBuffer.allocateDirect(100)。
ScatteringByteChannel 與 GatheringByteChannel 介面定義 read/write 陣列緩衝區方法。
- File lock 是針對檔案而非 Channel,對程序有效而非執行緒。可透過記憶體映射檔案實現執行緒同步。
- MappedByteBuffer 為 direct buffer。load() 嘗試載入整個檔案到記憶體,force() 將資料刷入硬碟。
- 未綁定埠的 DatagramChannel 系統會自動分配埠。connect() 後可保證只接收指定來源的資料包,此時可使用一般 read/write 含 Scatter/Gather。
希望本文所述對大家的 Java 程式設計有所幫助。