jdk1.8中ConcurrentHashMap如何保证线程安全

来源:9-4 HashMap与ConcurrentHashMap解析

宝慕林4309021

2019-01-17

如题

写回答

1回答

Jimin

2019-01-18

你好,concurrentHashmap在各个版本都是线程安全的,只是1.8版本实现时做了比较大的调整,具体为:ConcurrentHashMap取消了segment分段锁,而采用CAS和synchronized来保证并发安全。数据结构采用数组+链表/红黑二叉树的方式实现。当链表中(bucket)的节点个数超过8个时,会转换成红黑树的数据结构来存储,这样设计的目的是为了减少同一个链表冲突过大情况下的读取效率。synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍。

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程