selector.select();
Set selectedKeys = selector.selectedKeys();
Iterator keyIterator = selectedKeys.iterator();
while(keyIterator.hasNext()) {
SelectionKey key = keyIterator.next();
// 移除已处理过的键
keyIterator.remove();
}
keyIterator.remove();就是这里,移除的明明是迭代器里的东西啊,为什么会把selectedKeys 集合里的东西移除掉
------解决思路----------------------
你在循环里面移除迭代器,你边循环边移除,循环完了,你也就移除完毕了
看看remove的玩法吧
------解决思路----------------------
Java Collection由于安全性问题,当一个线程在对Collection进行迭代时,另一个线程如果调用remove()方法则会抛出ConcurrentModificationException,只能使用迭代器本身的remove()进行删除。
selector.selectedKeys内部实现应该是使用了Java Collection下的某个类来实现的,所以返回的迭代器的remove()方法可以正确删除一个元素。
------解决思路----------------------
可以看源码啊!!!!
------解决思路----------------------
+++