美文网首页
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