concurrenthashmap存储结构
时间: 2023-09-12 13:11:39 浏览: 119
ConcurrentHashMap的底层数据结构与HashMap相同,都是基于哈希表实现的。即它们都使用了哈希值来确定存储位置。在HashMap中,通过利用键的hashCode值进行位运算来计算存储位置,以实现尽量均匀分布的哈希函数。而ConcurrentHashMap相比HashMap多了一层并发安全性的保护,它将整个数据结构分割成多个Segment(段),每个Segment相当于一个独立的小的HashMap,每个Segment拥有自己的锁,不同的线程可以并发地访问不同的Segment,从而提高了并发效率。
在ConcurrentHashMap中,put和get操作都要经过两次哈希定位。首先,通过哈希函数计算出键的哈希值,然后通过一次哈希定位找到对应的Segment,再通过第二次哈希定位找到Segment内的具体Entry,最后在Entry链表中进行操作。这样的设计能够减少锁的竞争范围,提高了并发性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [ConcurrentHashMap的数据结构](https://blog.csdn.net/stone_tomcate/article/details/100110453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [ConcurrentHashMap底层实现原理(JDK1.8)源码分析](https://blog.csdn.net/weixin_39687411/article/details/87369126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文