美文网首页
ConcurrentHashMap和HashTable

ConcurrentHashMap和HashTable

作者: lwz9103 | 来源:发表于2018-01-29 23:39 被阅读0次

一、HashTable(线程安全)

读方法写写方法都加锁,锁数量太少,竞争激烈


image.png image.png image.png

二、ConcurrentHashMap(线程安全)

对hash值,进行分段加锁,hash值处在同一个segment的进行加锁。

1. 多线程HashMap出现死循环的问题

扩容时,同时调用reHash方法,导致形成环形列表,且有些元素位置错乱。下次获取元素时,可能会在循环列表中获取,但是元素错乱后,无法找到,导致死循环。

2.ConcurrentHashMap分段加锁原理

2.1spread进行分组


image.png

2.2 put操作时
如果hash位置没有元素,采用cas写入元素


image.png
如果hash位置已有元素,且对象相等,则更新
如果hash碰撞,则synchronied加锁操作

相关文章

网友评论

      本文标题:ConcurrentHashMap和HashTable

      本文链接:https://www.haomeiwen.com/subject/wnafzxtx.html