源码分析 --- Java中ConcurrentHashMap

本文详细介绍了Java中的并发集合ConcurrentHashMap,包括其基于CAS的乐观锁机制,1.8版本的设计改进,如数组+链表+红黑树的存储结构,以及初始化容量、负载因子等参数。此外,文章还探讨了链表转红黑树的条件,ConcurrentHashMap的构造函数,以及get和putVal方法的工作原理。同时,提到了1.7版本的分段锁Segment,并讨论了扩容和树化的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 理解ConcurrentHashMap

    • 一、CAS  Compare And Swap 比较并替换,也是用的乐观锁的机制;

      • CAS中有三个基本的操作元素

        • 内存地址 V;

        • 旧的预期值 A;

        • 新的值 B;

        • 更新一个值的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B;

        • 如果更新失败,则重试,其实这个过程也算是一种对数据的锁保护(不去操作);

    • 二、ConcurrentHashMap从1.5版本开始使用,1.8版本的设计更加参考了HashMap的设计,数组 + 链表 + 红黑树;

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    杨鑫newlfe

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值