HashMap迭代过程中fail-fast 机制失败经历!!
来源:互联网 发布:日剧花样少年少女 知乎 编辑:程序博客网 时间:2024/06/05 12:30
上面这段代码运行过程中会抛出java.util.ConcurrentModificationException,这是“Fail Fast”机制在启作用,Collection结构在其返回遍历器(Iterator)后的任何时候发生变化(这种变化不包括遍历器本身调用remove方法移除元素)后,将会导致遍历器抛出异常的机制,保证集合中元素至始至终要保持一至,如果发生改变,就要通知客户端。若将上面代码中 map.put(new Object(), "b");这句注释掉,程序会顺利通过。因为Fail Fast检查只是在 KeyIterator 中的next方法进行,些方法又调用了HashIterator中的nextEntry来返回一个entry。KeyIterator 中的hasNext方法只是进行了return next != null;这一句来判断是否有下一个entry。问题就出现在这里,如果原来Iterator中只有一个entry,在第一次迭代过程中对它进行了修改后,hasNext返回false结束了迭代过程,netx方法中的“Fail Fast”机制检查没有执行到,所以程序会安全通过。本例简单化了使用情景,一般是在多线程环境中。
- HashMap迭代过程中fail-fast 机制失败经历!!
- HashMap 多线程处理之 Fail-Fast机制
- HashMap 多线程处理之 Fail-Fast机制:
- HashMap 多线程处理之 Fail-Fast机制
- fail-fast快速失败机制分析
- java中的fail-fast(快速失败)机制
- Java中Fail-Fast机制、ConcurrentModificationException异常
- fail-fast(快速失败/报错机制)-ConcurrentModificationException
- Java学习笔记 14 快速失败fail-fast机制
- fail-fast机制
- Fail-fast机制
- Fail Fast机制
- fail-fast机制
- Fail-Fast 机制
- fail-fast机制
- fail-fast机制
- fail-fast机制
- Java fast-fail机制
- 多服务器的用户身份认证方案
- 数据库操作备忘
- Visual C++ 版本
- 090304周三
- oracle10 XE 增加连接数
- HashMap迭代过程中fail-fast 机制失败经历!!
- JDK 1.6.0和 6.0 有啥区别,JavaTM SE 6 的平台名字和版本号的说明
- Dojo的新Demo:Facebook?
- Oracle 9i创建用户和表空间并赋予权限
- SQL Server2000数据库分离与附加
- Oracle常用系统信息表
- 得到oracle 的表中所有列的列名,类型,长度。等等一系列属性
- GridView文本框自动计算
- 房价高要杀价有道 二手房杀价二十四招全攻略