A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王松朝 金牌黑马   /  2011-7-27 15:49  /  2244 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashMap是快速失败的,是什么意思?

4 个回复

倒序浏览
黑马网友  发表于 2011-7-27 15:56:55
沙发
迭代器机制

  由所有此类的“collection 视图方法”所返回的迭代器都是快速失败 的:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器本身的 remove 方法,其他任何时间任何方式的修改,迭代器都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒在将来不确定的时间发生任意不确定行为的风险。
  注意,迭代器的快速失败行为不能得到保证,一般来说,存在非同步的并发修改时,不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的程序的做法是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测程序错误。

讲的是对集合的并发操作吧

评分

参与人数 1技术分 +1 收起 理由
admin + 1 要给分

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-27 16:46:39
藤椅
:L 楼主这个问题好模糊
回复 使用道具 举报
黑马网友  发表于 2011-7-27 21:58:01
板凳

回复 沙发 的帖子

去掉最后一句,就和API上的解释一字不差了…
还是不太懂呀,"快速失败"莫不是并发的时候就出错了?也不对呀,那个叫线程安全的呀…
求高手通俗的解释什么是"快速失败"?
回复 使用道具 举报
黑马网友  发表于 2011-7-27 23:40:07
报纸
我是这样理解的,不知道对不对,迭代器是作为取出元素的一个标志而产生的,真样一来就好比提前将集合的内容先"记忆下来了",所以当集合中的元素内容改变时,迭代器就不可能取出正确的元素,因为集合变了,所以毫不客气的就停止取出元素操作(快速失败),“不能拿着昨天的车票上今天的火车”,不知道这样理解快速失败对不对。呵呵~见笑了,欢迎讨论!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马