美文网首页Java集合
java8 ConcurrentHashMap的put方法

java8 ConcurrentHashMap的put方法

作者: 12345婷花 | 来源:发表于2019-07-12 08:41 被阅读85次

java8 ConcurrentHashMap源码分析

put方法

直接进入put方法,同其他集合类,主要内容都在putVal方法中。

putVal方法主要思路如下:

计算Hash值

判断当前的table是否为空,如果为空则进行初始化操作。

table不为空则根据Hash值找到对应下标的节点

下标节点为空则通过cas将新节点放入,失败进入循环

如果为ForwardingNode类型,则表示当前其他线程正在扩容,则进入helpTransfer()协助扩容

如果不为空且是普通节点,则对节点上锁,往链表或者红黑树添加。

cas更新baseCount,并判断是否需要扩容

相关文章

网友评论

    本文标题:java8 ConcurrentHashMap的put方法

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