current hashmap组成
时间: 2023-10-19 08:30:27 浏览: 111
hashmap 集合
Java 中的 ConcurrentHashMap 是线程安全的哈希表实现,它是在 JDK 1.5 中引入的,并且相比于 Hashtable 和 SynchronizedMap,它具有更高的并发性能。
ConcurrentHashMap 主要由以下组成部分:
1. 数组:ConcurrentHashMap 内部使用一个数组来存储键值对。
2. 链表和红黑树:当 hash 冲突发生时,ConcurrentHashMap 内部会使用链表来存储具有相同 hash 值的键值对。在 JDK 1.8 中,当链表长度超过阈值时,ConcurrentHashMap 会将链表转换为红黑树,以提高查找效率。
3. Segment:ConcurrentHashMap 内部将数组分为多个段(Segment),每个段都是一个独立的哈希表,每个段都有自己的锁。这样,不同的线程可以同时访问不同的段,从而提高并发性能。
4. CAS:ConcurrentHashMap 内部使用 CAS(Compare and Swap)操作来保证线程安全性。CAS 是一种乐观锁机制,它允许多个线程同时读取数据,但只允许一个线程写入数据。如果多个线程同时尝试写入数据,只有一个线程能够成功,而其他线程需要重新尝试。
综上所述,ConcurrentHashMap 主要由数组、链表和红黑树、Segment 和 CAS 等组成。这些组成部分共同保证了 ConcurrentHashMap 的线程安全性和并发性能。
阅读全文