1. 程式人生 > >JAVA的NIO中為什麼輪詢之後需要刪除SelectionKey

JAVA的NIO中為什麼輪詢之後需要刪除SelectionKey

1.在呼叫Seletor的select()方法的時候,其中呼叫了各個OS實現的posix介面中的poll函式。(posix介面中的select函式和poll函式類似:都是返回就緒描述符的數目,如超時則為0,若出錯則為-1)。

2.當poll返回時,其後會執行updateseletionkeys方法,該方法會呼叫subselector中的processselectionkeys()方法,processselectionkeys()方法的大致過程就是處理read、write和exception的fd,然後計算出一個值,這個值就是Seletor的select()的返回值。