为什么说ConcurrentHashMap在jdk1.8以后锁的粒度更细?
时间: 2023-11-01 08:55:01 浏览: 284
Java 多线程与并发(13-26)-JUC集合- ConcurrentHashMap详解.pdf
ConcurrentHashMap在JDK 1.8以后锁的粒度更细是因为引入了基于CAS(Compare and Swap)的并发控制机制。在JDK 1.8之前,ConcurrentHashMap使用了分段锁(Segment Locking)来实现并发访问控制,即将整个数据结构分成多个段,每个段都有自己的锁。这种锁的粒度较大,在高并发场景下可能会导致竞争激烈,限制了并发性能的提升。
而JDK 1.8引入了新的数据结构设计——红黑树(Red-Black Tree),并且使用CAS操作来实现节点的插入、删除等操作。这样一来,不再需要使用分段锁,而是可以对每个节点进行细粒度的并发控制。通过将链表转化为红黑树,大大减少了链表长度过长时的搜索时间,提高了并发访问的效率。
总结来说,JDK 1.8以后的ConcurrentHashMap通过CAS和红黑树的引入,使得锁的粒度更细,减少了竞争,提高了并发性能。
阅读全文