public class selectortest else if (sktemp.isreadable())
if (bb.position() == bb.capacity())
bb.clear();
}keys.remove(sktemp);}}
}}
} catch (ioexception e)
}}
上例中可以看出使用selector的一般過程,channel通過register方法註冊到selector,並註明它感興趣的事件,之後通過selector的select方法判斷有沒有感興趣時間發生,如果有,通過selectedkeys方法獲得興趣事件的集合。
selectionkey可以理解為channel和selector之間互動資訊的橋梁,其中有幾種預設的事件,包括op_connect(連線就緒)、op_accept(接受就緒)、op_read(讀就緒)和op_write(寫就緒),可以通過上例中的**注釋和前兩篇的內容來加深理解。
Java NIO學習總結
1 nio的概念 從jdk1.4開始就出現非阻塞式 non blocking io,是基於通道 channel 和緩衝區 buffer 進行操作 內部設定兩個緩衝區 傳送區 接收區 和高速通道 兩個緩衝區 傳送區 接收區 高速通道 封裝了socket 2 nio的模式 資料從高速通道中出來,都會進入...
關於SEL的簡單總結
sel就是對方法的一種包裝。包裝的sel型別資料它對應相應的方法位址,找到方法位址就可以呼叫方法。在記憶體中每個類的方法都儲存在類物件中,每個方法都有乙個與之對應的sel型別的資料,根據乙個sel資料就可以找到對應的方法位址,進而呼叫方法。根據.h檔案中定義的person類和方法 執行完這行 在記憶...
JAVA NIO系列(三) Buffer 解讀
nio中的buffer用於和通道互動,資料是從通道讀入緩衝區,從緩衝區中寫入通道的。buffer就像乙個陣列,可以儲存多個型別相同的資料。每種基本資料型別都有對應的buffer類 1 capacity 容量 buffer本質是乙個陣列,在初始化時有固定的大小,這個值就是容量。容量不可改變,一旦緩衝區...