1.8 concurrenthashmap底层
时间: 2023-10-03 11:03:37 浏览: 67
JDK1.8 ConcurrentHashMap的一点理解
5星 · 资源好评率100%
ConcurrentHashMap 是 Java 并发包中提供的一个线程安全的哈希表实现,它支持高并发的读写操作,并且在性能方面表现出色。ConcurrentHashMap 的底层采用了数组加链表的形式来存储数据,同时还使用了一种称为分段锁(Segment)的机制来实现并发控制。
具体来说,ConcurrentHashMap 内部维护了一定数量的 Segment(默认为 16 个),每个 Segment 中包含一个 HashEntry 数组和一个 ReentrantLock 锁。HashEntry 数组中的每个元素都是一个链表的头节点,链表中存储了具有相同哈希值的键值对。
在进行读操作时,线程会先获取对应 Segment 的锁,然后在 HashEntry 数组中找到对应的头节点,遍历链表查找键值对。在进行写操作时,线程也会先获取对应 Segment 的锁,然后在 HashEntry 数组中找到对应的头节点,再根据键的哈希值找到对应的链表节点,最后进行插入、修改或删除操作。
由于每个 Segment 都有自己的锁,因此不同的线程可以同时访问不同的 Segment,从而实现了高并发的读写操作。同时,ConcurrentHashMap 还使用了一种称为 CAS(Compare and Swap)的机制来实现对数组元素的原子更新,从而提高了并发性能。
阅读全文