selector.select(); Set selectedKeys = selector.selectedKeys(); Iterator keyIterator = selectedKeys.iterator(); while(keyIterator.hasNext()) { SelectionKey key = keyIterator.next(); // 移除已处理过的键 keyIterator.remove(); }
Java Collection由于安全性问题,当一个线程在对Collection进行迭代时,另一个线程如果调用remove()方法则会抛出ConcurrentModificationException,只能使用迭代器本身的remove()进行删除。 selector.selectedKeys内部实现应该是使用了Java Collection下的某个类来实现的,所以返回的迭代器的remove()方法可以正确删除一个元素。
67,550
社区成员
225,863
社区内容
加载中
试试用AI创作助手写篇文章吧