Set<SelectionKey> selectionKeys = selector.selectedKeys();這里沒必要刪除,也就沒必要使用迭代器遍歷了,因為for循環都會生成一個新的Set對象。如果是在for循環外聲明并初始化Set<SelectionKey> selectionKeys = new HashSet<~>(),并且for循環中使用的是selectionKeys.addAll(selector.selectedKeys()),這樣才需要迭代器刪除的吧?請各位大佬不吝賜教。
2019-05-19
每次select(),都應該使用一個空的SelectionKey集合。否則下次Select()再處理,會引起狀態錯誤。所以 在每次的select()后的循環處理中,將每個Channel就緒信息刪除,其實也可以在每次Select()后整體清空SelectionKey集合
2019-05-13