ConcurrentHashMap(未完)

JDK1.8 ConcurrentHashMap:
数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。除此以外,采用CAS和synchronized来保证并发安全。synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍。
Put:

  1. 判断Node[]数组是否初始化,没有则进行初始化操作
    2.通过hash定位Node[]数组的索引坐标,是否有Node节点,如果没有则使用CAS进行添加(链表的头结点),添加失败则进入下次循环。
    3.检查到内部正在扩容,如果正在扩容,就帮助它一块扩容。
    4.如果f!=null,则使用synchronized锁住f元素(链表/红黑二叉树的头元素)
    4.1如果是Node(链表结构)则执行链表的添加操作。
    4.2如果是TreeNode(树型结果)则执行树添加操作。
    5.判断链表长度已经达到临界值8 就需要把链表转换为树结构。

Get:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值