面试官:HashMap中的modCount变量究竟有何神秘作用,为何多数人误解其真谛?

2026-04-11 10:250阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计856个文字,预计阅读时间需要4分钟。

面试官:HashMap中的modCount变量究竟有何神秘作用,为何多数人误解其真谛?

来源自:blog.csdn.net/dabusiGin/article/details/105483426 错误的结论+在网络上搜索HashMap中变量modCount的作用时,大部分解释都是:Fail-Fast机制+我们知道java.util.HashMap不是线程安全的,因此...

来源:blog.csdn.net/dabusiGin/article/details/105483426

错误的结论

在网上搜索HashMap中变量modCount的作用时,大部分的解释都是这样:

Fail-Fast 机制

我们知道 java.util.HashMap 不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改了map,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。

这一策略在源码中的实现是通过 modCount 域,modCount 顾名思义就是修改次数,对HashMap 内容的修改都将增加这个值,那么在迭代器初始化过程中会将这个值赋给迭代器的 expectedModCount。在迭代过程中,判断 modCountexpectedModCount 是否相等,如果不相等就表示已经有其他线程修改了 Map:注意到 modCount 声明为 volatile,保证线程之间修改的可见性。

阅读全文

本文共计856个文字,预计阅读时间需要4分钟。

面试官:HashMap中的modCount变量究竟有何神秘作用,为何多数人误解其真谛?

来源自:blog.csdn.net/dabusiGin/article/details/105483426 错误的结论+在网络上搜索HashMap中变量modCount的作用时,大部分解释都是:Fail-Fast机制+我们知道java.util.HashMap不是线程安全的,因此...

来源:blog.csdn.net/dabusiGin/article/details/105483426

错误的结论

在网上搜索HashMap中变量modCount的作用时,大部分的解释都是这样:

Fail-Fast 机制

我们知道 java.util.HashMap 不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改了map,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。

这一策略在源码中的实现是通过 modCount 域,modCount 顾名思义就是修改次数,对HashMap 内容的修改都将增加这个值,那么在迭代器初始化过程中会将这个值赋给迭代器的 expectedModCount。在迭代过程中,判断 modCountexpectedModCount 是否相等,如果不相等就表示已经有其他线程修改了 Map:注意到 modCount 声明为 volatile,保证线程之间修改的可见性。

阅读全文