cosen1024 / Java-Interview

「Java面试小抄」一份通向理想互联网公司的面试汇总,包括 Java基础、Java并发、JVM、MySQL、Redis、Spring、MyBatis、Kafka、计算机操作系统、计算机网络、系统设计、分布式、Java 项目实战等

Home Page:https://www.javalearn.cn/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问大佬,ConcurrentHashMap的弱一致性和安全失败的关系怎么理解?

bigbeats opened this issue · comments

安全失败:由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭代器检测到。
弱一致性:ConcurrentHashMap 的迭代器创建后,就会按照哈希表结构遍历每个元素,但在遍历过程中,内部元素可能会发生变化,如果变化发生在已遍历过的部分,迭代器就不会反映出来,而如果变化发生在未遍历过的部分,迭代器就会发现并反映出来,这就是弱一致性。

未遍历部分的元素修改的话,这两个说法感觉有些矛盾啊?