Java NIO入門基礎(chǔ)

Java NIO(New IO)是一個可以替代標準Java IO的IO API(從JDK1.4開始),Java NIO提供了與標準IO不同的工作模式。

Java NIO概述
Java NIO核心由Channels、buffers、Selectors組成,還有其他組件如Pipe、FileLock。

Channel 和 Buffer

基本上,所有的 IO 在NIO 中都從一個Channel 開始。Channel 有點象流。 數(shù)據(jù)可以從Channel讀到Buffer中,也可以從Buffer 寫到Channel中。數(shù)據(jù)總是從通道讀取到緩沖區(qū)中,或者從緩沖區(qū)寫入到通道中

Channel和Buffer有好幾種類型。下面是JAVA NIO中的一些主要Channel的實現(xiàn),這些通道涵蓋了UDP 和 TCP 網(wǎng)絡(luò)IO,以及文件IO。

  • FileChannel:從文件中讀寫數(shù)據(jù)
  • DatagramChannel:通過UDP讀寫網(wǎng)絡(luò)中的數(shù)據(jù)
  • SocketChannel:通過TCP讀寫網(wǎng)絡(luò)中的數(shù)據(jù)
  • ServerSocketChannel:可以監(jiān)聽新進來的TCP連接

以下是Java NIO里關(guān)鍵的Buffer實現(xiàn):
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer
這些Buffer覆蓋了可以通過IO發(fā)送的基本數(shù)據(jù)類型:byte, short, int, long, float, double 和 char。Java NIO 還有個 MappedByteBuffer,用于表示內(nèi)存映射文件。緩沖區(qū)本質(zhì)上是一塊可以寫入數(shù)據(jù),然后可以從中讀取數(shù)據(jù)的內(nèi)存。這塊內(nèi)存被包裝成NIO Buffer對象,并提供了一組方法,用來方便的訪問該塊內(nèi)存

Selector

Selector允許單線程處理多個 Channel。如果應(yīng)用打開了多個連接(通道),但每個連接的流量都很低,使用Selector就會很方便。這是在一個單線程中使用一個Selector處理3個Channel的圖示

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容