Java - NIO

JDK在1.4以後對傳統的面向流的I/O操作作了很大的優化,傳統I/O是面向流的,字節流或者字符流,而且每當我們在調用read()或者write()方法的時候就會一直等待在那個地方,知道資源可用位置。這很大程度上限制了I/O的效率。

JDK1.4以後引入了新的I/O操作的實現NIO(新的input/output),NIO的核心內容是:緩衝區buffer,通道channel,選擇器Selector。

所謂緩衝區Buffer:

一段固定長度的內存空間,用來存放數據,可以向緩衝區中寫入數據,也可以衝緩衝區中讀取數據。

(1)容量(capacity):表示該緩衝區能夠寫入和讀取的最大數量,穿件Buffer的時候設定 allocate(int capacity)方法。

(2)上界(Limit):緩衝區第一個不能被讀取和寫入的位置

(3)位置(Position):下一個讀取和寫入的位置

ByeBuffer :字節

CharBuffer:字符

ShortBuffer:short類型

IntBuffer :int類型

LongBuffer:long類型

DoubleBuffer :double類型

FloatBuffer:float類型

通道Channel

傳統的IO是面向流的單向的數據傳輸,新的IO是面向通道的,通道是雙向的。通道時連接緩衝區和IO服務之間的一個通道。

FileChannel:文件通道

DatagramChannel:UDP通信的通道

ServerSocketChannel:TCP服務器端通道

SocketChannel:TCP客戶端通道

選擇器Selector

選擇器的實現模式用到了java中的觀察者模式,一個選擇器上面可以註冊很多的通道,然後通過選擇器一個線程就可以管理很多通道,目前選擇器是通過輪詢的方式來監控通道的狀態的。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章