2021
08-25
08-25
解析ConcurrentHashMap: get、remove方法分析
目录1、get方法1.1ForwardingNode内部类(FWD结点)2、remove方法前面几篇文章分析了并发HashMap的put方法及其相关方法,transfer方法,那么接下来本篇文章相对之前几篇难度会小一些。本篇文章介绍ConcurrentHashMap的get方法和remove方法。1、get方法get方法:获取元素,根据目标key所在桶的第一个元素的不同采用不同的方式获取元素,关键点在于find()方法的重写。publicVget(Objectkey){//tab引用map.table//e当...
继续阅读 >
上一篇文章介绍过put方法以及其相关的方法,接下来,本篇就介绍一下transfer这个方法(比较难),最好能动手结合着源码进行分析,并仔细理解前面几篇文章的内容~注:代码分析的注释中的CASE0、CASE1…,这些并没有直接关联关系,只是为了给每个if逻辑判断加一个标识,方便在其他逻辑判断的地方进行引用而已。再复习一下并发Map的结构图:1、transfer方法transfer方法的作用是:迁移元素,扩容时table容量变为原来的两倍,并...
目录1、简介2、JDK1.8ConcurrentHashMap结构图3、成员属性4、静态属性5、静态代码块6、内部类6.1Node节点6.2ForwardingNode节点6.3TreeNode节点7、构造方法8、总结1、简介ConcurrentHashMap是HashMap的线程安全版本,内部也是使用(数组+链表+红黑树)的结构来存储元素。相比于同样线程安全的HashTable来说,效率等各方面都有极大地提高。在学习ConcurrentHashMap源码之前,这里默认大家已经读过HashMap源码,了解LongAdde...