Java的NIO之通道channel詳解
通道(channel)
通道(channel):由java.nio.channels 包定義的。
Channel 表示IO源與目標打開的連接。
Channel類類似于傳統(tǒng)的“流”。只不過Channel本身不能直接訪問數(shù)據(jù),Channel只能與Buffer進行交互。
jvm數(shù)據(jù)傳輸?shù)陌l(fā)展
第一階段:由CPU直接處理和管理IO接口并進行數(shù)據(jù)傳輸。
第二階段:引入寄存器DMA(流的概念引入),在需要使用IO操作的時候,由寄存器DMA向CPU申請,然后再由寄存器統(tǒng)一管理IO接口,實現(xiàn)數(shù)據(jù)傳輸。
第三階段:寄存器DMA換成通道Channel,通道獨立開來不由CPU管,也不需要申請權(quán)限,只有由其對IO接口進行處理和管理,然后實現(xiàn)數(shù)據(jù)傳輸。
Java為Channel接口提供的最主要實現(xiàn)類如下:
- FileChannel : 用于讀取、寫入、映射和操作文件的通道
- DatagramChannel : 通過 UDP 讀寫網(wǎng)絡(luò)中的數(shù)據(jù)通道。
- SocketChannel : 通過 TCP 讀寫網(wǎng)絡(luò)中的數(shù)據(jù)。
- ServerSocketChannel : 可以監(jiān)聽新進來的 TCP 連接,對每一個新來進來的連接都會創(chuàng)建一個 SocketChannel。
獲取通道
獲取通道的一種方式是對支持通道的對象調(diào)用getChannel() 方法。支持通道的類如下:
- FileIputStream
- FileOutputStream
- RandomAccessFile
- DatagramSocket
- Socket
- ServerSocket 獲取通道的其他方式是使用 Files 類的靜態(tài)方法 newByteChannel()獲取字節(jié)通道?;蛘咄ㄟ^通道的靜態(tài)方法open() 打開并返回指定通道。
FileChannel的常用方法
到此這篇關(guān)于Java的NIO之通道channel詳解的文章就介紹到這了,更多相關(guān)Java通道channel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java基于C/S模式實現(xiàn)聊天程序(服務(wù)器)
這篇文章主要為大家詳細介紹了java基于C/S模式實現(xiàn)聊天程序的服務(wù)器篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01詳解Java LinkedHashMap與HashMap的使用
這篇文章主要通過幾個示例為大家詳細介紹了Java中LinkedHashMap與HashMap的常見使用和概述,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2022-10-10Java利用redis實現(xiàn)防止接口重復(fù)提交
本文主要為大家詳細介紹了Java如何利用redis實現(xiàn)防止接口重復(fù)提交,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-11-11Java使用poi導(dǎo)出ppt文件的實現(xiàn)代碼
Apache POI 是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java對Microsoft Office格式檔案讀和寫的功能。本文給大家介紹Java使用poi導(dǎo)出ppt文件的實現(xiàn)代碼,需要的朋友參考下吧2021-06-06