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