查看原文
其他

你听说过 Fail-fast 机制吗?程序的浪漫?

Java4ye Java4ye 2022-09-04

你听说过 Fail-fast 机制吗?程序的浪漫?

快速失败?! 纳尼 失败还能这么快的吗  ?

我以为电视上那个什么勿扰的牵手环节已经够快了,当场出结果,没想到这代码里也有这种机制~

img

哈哈哈哈 难道代码也有这么浪漫的环节?!

img

想多了啦你 哈哈哈哈

还不快来看源码?

真是太不容易了  又骗了一个 程序员进来修炼 罪过啊~ 哈哈哈

img

上文我们说到了这个HashMap,  下面我们简单介绍下 集合家族中相关的 fail-fast机制~

这个其实是 Java 集合类的一个错误机制,会抛出 ConcurrentModificationException

这个错误发生的时机 就是在 遍历时对集合的结构进行修改 ,即删除或者添加元素时。

但是通过迭代器iterator 中的 remove 方法是不会报错的 ,下面让我们来看看这到底是为什么吧~

image-20210309221620604

上面这个 foreach 语法是个语法糖  实际调用的还是 迭代器的 iterator 的 next 方法

可以看到我们平时使用的,key,value 和 entry 这三种迭代器~

image-20210309222408534

remove 方法源码

每次对集合结构进行修改时,都会对 modCount 进行加1操作~

public final void remove() {
    Node<K,V> p = current;
    if (p == null)
        throw new IllegalStateException();
    if (modCount != expectedModCount)
        throw new ConcurrentModificationException();
    current = null;
    K key = p.key;
    removeNode(hash(key), key, nullfalsefalse);
    // 其实就是最后一句话,对 这个期待值 重新 赋值了
    expectedModCount = modCount;
}

如果你耐心看到这里了,那我还想多嘴下~

img

喂,记得把花带上呀!光有一颗浪漫的心还不够呀~



谢谢可爱又帅气的大佬们的观看!祝您 天天开心!😄  


感谢您的关注!您的每个关注,都是博主 肝 的动力 😝

         

点个“在看”表示朕


面试, HashMap,看?


一文带你看遍单例模式的八个例子,面试再也不怕被问了


摸鱼小技巧之IDEA调试篇一



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存