Java集合

java8 ConcurrentHashMap的put方法

2019-07-12  本文已影响85人  12345婷花

java8 ConcurrentHashMap源码分析

put方法

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

putVal方法主要思路如下:

计算Hash值

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

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

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

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读