- 在ConcurrentHashMap中,无论是读操作还是写操作都能保证很高的性能
- 在进行读操作时(几乎)不需要加锁,而在写操作时通过锁分段技术只对所操作的段加锁而不影响客户端对其它段的访问。
- 在理想状态下,ConcurrentHashMap 可支持
16个线程
执行并发写操作,及任意数量线程的读操作。 - 关于它的存储结构
- JDK 1.7 中使用分段锁(ReentrantLock + Segment + HashEntry),相当于把一个 HashMap 分成多个段,每段分配一把锁,这样支持多线程访问。锁粒度:
基于 Segment
,包含多个 HashEntry。 - JDK 1.8 中使用 CAS + synchronized + Node + 红黑树。锁粒度:
Node(首结点)
(实现 Map.Entry<K,V>)。锁粒度降低了。
- JDK 1.7 中使用分段锁(ReentrantLock + Segment + HashEntry),相当于把一个 HashMap 分成多个段,每段分配一把锁,这样支持多线程访问。锁粒度:
说下ConcurrentHashMap ?
最新推荐文章于 2024-05-31 10:46:10 发布