黑马程序员技术交流社区

标题: 快速失败是什么 [打印本页]

作者: 王松朝    时间: 2011-7-27 15:49
标题: 快速失败是什么
HashMap是快速失败的,是什么意思?
作者: 匿名    时间: 2011-7-27 15:56
迭代器机制

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

讲的是对集合的并发操作吧
作者: 匿名    时间: 2011-7-27 16:46
:L 楼主这个问题好模糊
作者: 匿名    时间: 2011-7-27 21:58
标题: 回复 沙发 的帖子
去掉最后一句,就和API上的解释一字不差了…
还是不太懂呀,"快速失败"莫不是并发的时候就出错了?也不对呀,那个叫线程安全的呀…
求高手通俗的解释什么是"快速失败"?
作者: 匿名    时间: 2011-7-27 23:40
我是这样理解的,不知道对不对,迭代器是作为取出元素的一个标志而产生的,真样一来就好比提前将集合的内容先"记忆下来了",所以当集合中的元素内容改变时,迭代器就不可能取出正确的元素,因为集合变了,所以毫不客气的就停止取出元素操作(快速失败),“不能拿着昨天的车票上今天的火车”,不知道这样理解快速失败对不对。呵呵~见笑了,欢迎讨论!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2