线程安全的HashMap
2023-08-22 18:21:04 4 举报
线程安全的HashMap
作者其他创作
大纲/内容
T2线程
...
T4线程
4
5
0
1
6
A
JDK 8 ConcurrentHashMap
JDK 8 的变化① 如果put元素放的位置Hash表上没有元素,就用CAS进行put保证线程安全;而JDK 7是上来就加锁
三个线程同时 put操作,都是落在同一个槽位,尝试获取锁
3
CAS无锁算法保证线程安全
10
C
HashTable,整个Hash表加锁粒度大
8
9
JDK 7 ConcurrentHashMap,锁粒度是一个槽位Segement
T3线程
B
第一次Hash判断数据落在哪个槽位
7
2
T1线程
Hash表数据第二次Hash判断数据落在Hash表的哪个索引位置
Hash表数据
JDK 8 的变化② 锁粒度更小,只锁住一个bucket,即链表
new Segement(extend ReentrantLock)数组每个槽位都具备加锁解锁能力
0 条评论
下一页