国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Java:單線程集合遍歷時(shí),刪除元素為何不導(dǎo)致fail-fast事件?

瀏覽:158日期:2024-01-30 15:46:22

問題描述

http://blog.csdn.net/lw305080...里有如下代碼,while (ite.hasNext()) 代碼塊里有 ite.remove();刪除元素為何不導(dǎo)致fail-fast事件?

public void listen() throws Exception { System.out.println('start server'); // 輪詢訪問selector while (true) { // 當(dāng)注冊事件到達(dá)時(shí),方法返回,否則該方法會(huì)一直阻塞 selector.select(); // 獲得selector中選中的相的迭代器,選中的相為注冊的事件 Iterator ite = this.selector.selectedKeys().iterator(); while (ite.hasNext()) { SelectionKey key = (SelectionKey) ite.next(); // 刪除已選的key 以防重負(fù)處理 ite.remove(); // 客戶端請求連接事件 if (key.isAcceptable()) { ServerSocketChannel server = (ServerSocketChannel) key.channel(); // 獲得和客戶端連接的通道 SocketChannel channel = server.accept(); // 設(shè)置成非阻塞 channel.configureBlocking(false); // 在這里可以發(fā)送消息給客戶端 channel.write(ByteBuffer.wrap(new String('hello client').getBytes())); // 在客戶端 連接成功之后,為了可以接收到客戶端的信息,需要給通道設(shè)置讀的權(quán)限 channel.register(this.selector, SelectionKey.OP_READ); // 獲得了可讀的事件 } else if (key.isReadable()) { read(key); } }

問題解答

回答1:

在單線程中,使用Iterator刪除元素是正確的做法。

回答2:

SelectionKey key = (SelectionKey) ite.next(); // 刪除已選的key 以防重負(fù)處理 ite.remove(); //這樣不會(huì)fail-fast//this.selector.selectedKeys().remove(key); 這樣才會(huì)fail-fast

至于原理可以看這篇文章:http://blog.csdn.net/ld513508...

標(biāo)簽: java
主站蜘蛛池模板: 国产大片一区 | 中文字幕乱码系列免费 | 欧美很黄视频在线观看 | 欧美野外性k8播放性迷宫 | 91国语精品自产拍在线观看一 | 久99久精品视频免费观看v | 成视频年人黄网站免费 | 波多野结衣一区二区三区在线观看 | 精品久久中文网址 | 亚洲精品成人中文网 | 日韩日韩日韩手机看片自拍 | 亚洲欧美中文在线观看4 | 成年黄色网址 | 日本亚欧乱色视频在线观看 | 国产精品国产精品 | 国产色司机在线视频免费观看 | 国内偷拍免费视频 | 久久99久久99 | 国产成人最新毛片基地 | 亚洲高清视频在线观看 | 国产护士一级毛片高清 | 日韩欧美亚洲每的更新在线 | 日本乱人伦片中文三区 | 国产成人午夜性视频影院 | 欧美人成a视频www | 中国女人毛片 | 中国精品视频一区二区三区 | 91啦国产| 毛片高清一区二区三区 | 国产精品午夜国产小视频 | 国产呦在线观看视频 | 国产v欧美v日韩在线观看 | 亚洲高清免费在线观看 | 亚洲国产系列 | 手机看片高清国产日韩片 | 色综合久久88一加勒比 | 免费一级毛片在线播放放视频 | 日韩精品一区在线观看 | 久久国产免费观看 | 国产美女午夜精品福利视频 | 一级特黄色毛片免费看 |