久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

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

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

問(wèn)題描述

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

public void listen() throws Exception { System.out.println('start server'); // 輪詢?cè)L問(wèn)selector while (true) { // 當(dāng)注冊(cè)事件到達(dá)時(shí),方法返回,否則該方法會(huì)一直阻塞 selector.select(); // 獲得selector中選中的相的迭代器,選中的相為注冊(cè)的事件 Iterator ite = this.selector.selectedKeys().iterator(); while (ite.hasNext()) { SelectionKey key = (SelectionKey) ite.next(); // 刪除已選的key 以防重負(fù)處理 ite.remove(); // 客戶端請(qǐng)求連接事件 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); } }

問(wèn)題解答

回答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
主站蜘蛛池模板: 国产高清在线精品一区二区三区 | 一区二区日本 | www.中文字幕.com | 精品久久久久久亚洲精品 | 男人视频网站 | 成人h视频| 久在线| 精品乱子伦一区二区三区 | jav成人av免费播放 | 91在线播| 一区二区免费视频 | 久久九九 | 国产精品久久久久久久久软件 | 天天干天操| 成人在线免费 | aa级毛片毛片免费观看久 | 国产野精品久久久久久久不卡 | 国产一区二区综合 | 人人看人人射 | 成人a视频在线观看 | 国产精品成人国产乱一区 | 欧美福利影院 | 欧美日韩在线看 | 久久综合社区 | 国产日韩欧美一区 | 欧美性猛交一区二区三区精品 | 欧美高清dvd | 欧美日韩在线视频一区二区 | 91精品国产乱码久久久久久久久 | 大伊人久久 | 精品国产一区二区三区av片 | 国产高潮好爽受不了了夜色 | 亚洲欧美国产一区二区三区 | 日韩精品在线免费观看视频 | 国产成人免费视频网站视频社区 | 国产高清精品一区二区三区 | 欧美成人综合在线 | 91精品福利 | 亚洲国产精品99久久久久久久久 | 成人在线精品视频 | 极品久久|