其实我们可以理解ConcurrentHashMap是HashMap的升级版,熟悉HashMap都知道其性能已经很拉菲了,但HashMap因不是线程安全的带来了高并发问题,因此就有了ConcurrentHashMap。
在平时的工作或面试中,经常需要考虑容器的选择问题,其中“map和hash_map的差异点”出现的概率最高。那么,我们从底层原理上看看具体都有哪些区别和联系。目录为了方便大家阅读文章,我们先介绍一下文章结构,大家可以直接跳到感兴趣的位置进行阅读。
Store:存储键值对,如果键值对出现在读map中,并且不是expunged,则通过原子操作直接更新value,如果 read map 中没有 key 或者 entry 不能更新,则需要加锁并处理三种情况: 情况 1:read map 中有 key,但 entry 被标记为 expunged。