NIO select逻辑的一些简单问题

超级呆子 发布于 2012/06/26 11:06
阅读 356
收藏 0
 Iterator<SelectionKey> iter = selector.selectedKeys().iterator();				
	while(iter.hasNext()) {
		SelectionKey key = iter.next();	
	
		if(key.isConnectable()) {
			//..				
		}
                if(key.isReadable()) {

                }
                if(key.isWritable()) {
 
                }
                iter.remove();
         }

上面是一段非常通用的NIO的select逻辑,最后会执行一个iter.remove()

这个只是从set集合中删除,已经遍历过的元素就不会再遍历,那么为什么要删除这个元素呢?

加载中
0
jingshishengxu
jingshishengxu
目的是不重复处理事件
0
超级呆子
超级呆子

但是处理select的逻辑是放在一个专门的线程中处理的,其他线程也更改不了select的逻辑

一遍迭代完成之后不就处理完了吗?重复事件又是怎么产生的呢?

 


0
JavaGG
JavaGG
事件处理完后是不是要删除??? Iterator只是一个失代器,你不通知他删除他永远都存在这个事件
返回顶部
顶部