Java的NIO之通道channel詳解
通道(channel)
通道(channel):由java.nio.channels 包定義的。
Channel 表示IO源與目標打開的連接。
Channel類類似于傳統(tǒng)的“流”。只不過Channel本身不能直接訪問數據,Channel只能與Buffer進行交互。
jvm數據傳輸的發(fā)展
第一階段:由CPU直接處理和管理IO接口并進行數據傳輸。
第二階段:引入寄存器DMA(流的概念引入),在需要使用IO操作的時候,由寄存器DMA向CPU申請,然后再由寄存器統(tǒng)一管理IO接口,實現數據傳輸。
第三階段:寄存器DMA換成通道Channel,通道獨立開來不由CPU管,也不需要申請權限,只有由其對IO接口進行處理和管理,然后實現數據傳輸。
Java為Channel接口提供的最主要實現類如下:
- FileChannel : 用于讀取、寫入、映射和操作文件的通道
- DatagramChannel : 通過 UDP 讀寫網絡中的數據通道。
- SocketChannel : 通過 TCP 讀寫網絡中的數據。
- ServerSocketChannel : 可以監(jiān)聽新進來的 TCP 連接,對每一個新來進來的連接都會創(chuàng)建一個 SocketChannel。
獲取通道
獲取通道的一種方式是對支持通道的對象調用getChannel() 方法。支持通道的類如下:
- FileIputStream
- FileOutputStream
- RandomAccessFile
- DatagramSocket
- Socket
- ServerSocket 獲取通道的其他方式是使用 Files 類的靜態(tài)方法 newByteChannel()獲取字節(jié)通道?;蛘咄ㄟ^通道的靜態(tài)方法open() 打開并返回指定通道。
FileChannel的常用方法
到此這篇關于Java的NIO之通道channel詳解的文章就介紹到這了,更多相關Java通道channel內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Java LinkedHashMap與HashMap的使用
這篇文章主要通過幾個示例為大家詳細介紹了Java中LinkedHashMap與HashMap的常見使用和概述,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2022-10-10