ByteBuffer 和其餘的Buffer,如chatBuffer,DoubleBuffer同樣都是Buffer的子類,ByteBuffer只有一個指針position用於處理讀寫操做,讀取的內容爲 position和limit之間的內容,ByteBuffer的flip() 方法使position置0,limit設置爲position 的位置,capacity是Buffer的上限,也就是申請大小的時候那個參數。一旦分配大小不變。(netty中的ByteBuf中有倆個標記指針,一個是readerindex,另外一個是writeindex),compat用於釋放已讀區域?待驗證。線程
Chanel 是同道,與流的區別主要是Chanel是雙向的,而流是單向的。channel同時支持讀寫。指針
Selector 是多路複用器, 能夠輪詢註冊在其上的Channel,當被輪詢到的Channel處於就緒時能夠進行操做,遍歷SelectKey能夠遍歷Channel集合,與傳統的IO 服務端客戶端模型不一樣, 用NIO一個線程用於輪詢Selector便可完成對多個鏈接的請求處理,前者一個線程維護一個請求。netty