【JAVA】【NIO】2、Java NIO Overview

來源:互聯網
上載者:User

標籤:java   nio   翻譯   

Java NIO主要有以下核心組件構成:

  1. 通道
  2. 緩衝
  3. 選取器
    Java NIO其實有比上面更多的類和組件,但是在我看來,Channel,Buffer,Selector是核心的API。其它組件,像管道和檔案鎖,僅僅只是在與三大核心組件結合使用時的通用工具類。
通道和緩衝

一般來說,NIO中的所有IO都是從通道開始的。通道就像一個流,資料可以從通道中讀到一個緩衝裡去,同樣,資料可以從緩衝寫進通道裡

上面代表讀操作,下面代表寫操作

在Java NIO中,主要有如下幾種通道:
·FileChannel
·DatagramChannel
·SocketChannel
·ServerSocketChannel
這些通道覆蓋了網路中的TCP,UDP的IO和檔案IO。

在Java NIO中,核心的緩衝如下:
·ByteBuffer
·CharBuffer
·DoubleBuffer
·FloatBuffer
·IntBuffer
·LongBuffer
·ShortBuffer
這些緩衝包括了通過IO發送資料的基礎資料型別 (Elementary Data Type)。
Java NIO還有一個MappedByteBuffer是用於記憶體檔案對應的。

選取器

一個選取器允許單個線程處理多個通道的資料。如果你的應用開啟了很多串連(channel),這就非常方便了,但是每個串連(channel)的流量會小一點。比如聊天伺服器。

單個線程通過選取器處理三個通道

首先把通道註冊到選取器上,然後你調用select()方法,這個方法會阻塞,直到有一個通道在你註冊的事件上就緒了。一旦方法返回了,線程就可以處理事件了。事件可以是建立串連,接受資料等等。

這裡提前附上一段代碼,各位讀者,先看下,後面會慢慢講解,代碼中也會有詳細的注釋

這段代碼就描述了選取器,註冊等相關機制。

【JAVA】【NIO】2、Java NIO Overview

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.