请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于集合的fail-fast机制

看过好多面经以及帖子提到这个东西,然而一直理解不了。希望老师补充一下qaq
十分感谢

正在回答 回答被采纳积分+3

1回答

翔仔 2019-02-24 01:07:29

同学好,这里短短几行文字说不清楚,我尽量说得简洁明了些,其他还得靠同学多多调研和学习。

当多个线程对同一个集合的内容进行操作时,就可能会产生 Fail-fast 事件,(至于符合fail-fast的类,同学可以课下了解一下,这里就不一一列举了)。而当我们在遍历集合的时候,对集合的结构进行了修改(比如说删除遍历的元素),就会抛出ConcurrentModificationException,这便是 Fail-fast机制。

其实现主要是通过对比集合类里面的modCount (修改次数)和expectedModCount(当前的修改次数)来实现的。

Fail-fast,据我的理解,主要是用来做最大努力保证集合结构在并发环境下不被改变,尽可能保证集合结构不受线程之间相互影响

0 回复 有任何疑惑可以回复我~
  • 提问者 luyuni #1
    老师我终于懂这个机制存在的意义了你看我说的对不对!
    
    在多线程环境中,如果另一个线程恰好在错误的时间里删除了一个元素导致序号i不可用的话,在访问i数组就会抛出ArrayIndexOutOfBoundException
    
    
    fail-fast的存在就是为了屏蔽这一异常!
    回复 有任何疑惑可以回复我~ 2019-03-14 08:57:44
  • 翔仔 回复 提问者 luyuni #2
    同学好,这么理解是对的,主要就是为了防止并发环境下集合结构的突然改变,导致线程间相互影响
    回复 有任何疑惑可以回复我~ 2019-03-15 00:59:47
  • 提问者 luyuni 回复 翔仔 #3
    嗯嗯~
    我也是今天看见深入理解Java虚拟机并发那章突然才理解存在的意义~
    就来求教一下~
    回复 有任何疑惑可以回复我~ 2019-03-15 01:04:09
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号