1、类比 HashMap
a、put的时候,他的hashcode方法优化了
b、初始化 table 的时候做了改变
c、tabAt(table,index) 如果是null 则调用native方法,个人觉得可以理解为创建
d、(fh = f.hash) == MOVED 这个状态不是很懂
e、往链表或者树里面添加数据
前提: 在Java中,synchronized关键字是用来控制线程同步的,
就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行
synchronized(this)是对象锁,如果有多个对象就有相对应的多个锁。(修饰一个代码块)
synchronized(类的名.class)是全局锁,不管有几个对象就公用一把锁。(修饰一个类)
用synchronized 来修饰链表对象 ,进入之后,判断是树还是链表,执行添加操作
f、链表的数量大于8(初始值),就变成树。
扩容 transfer() 方法 生成一个 原来 2倍的数组
网友评论