JDK1.2有一个求解多线程并发的工具类。线程局部类实质上正在改变空间的时间,因此每个线程都有共享变量的副本。修改您自己的变量副本,它不会相互影响,
threadlocal属性非常简单,是nexthashcode,并且有一个魔术号hash_increment变量。它是每个时间的固定数量,并且获得了下一个哈希值。将以下代码的官方注释与持续增加的哈希码进行比较。固定魔法的数量对于2的n- free dower的数组更有效2.至于为什么选择此魔术数字的选择与该魔术数字有关斐波那契号,如果您有兴趣,可以搜索相关信息研究
GET SET方法是理解线路的核心原则,
从下面,您可以看到threadlocalmap数组的对象是条目对象。它继承了虚弱的重益。当初始化条目对象时,parent -class构造函数,即输入对象中的k是弱参考,当对象创建上方对象时,对象是在对象上方创建的。传递的参数是螺纹局部对象,因此将其放入threadlocalmap中的threadlocalmap中时很弱。
线程与线程截图与线程列表之间的关系如下:
从上图可以看出,螺纹量符号中的键是螺纹局部对象,该值是保留的变量值。这两个构成了一个入口对象。将其设置在threadlocalmap.t是一个拉链方法中,它只是其中两个。其他人可以继续看不起。
接下来,如果更换旧条目,请查看替代品。
Staleslot是一个入口索引,是键的已知索引,并且从staleslot搜索从背面到后面。
这是对传单i的搜索(也就是说,登记的函数返回索引的位置,即,在staleslot位置后的第一个进入位置是肮脏数据的索引),n是tab的长度,从i,如果它启动,如果您以后将其穿越,如果以后将其穿越,如果您以后将其穿越,如果您以后将其穿越,则输入不为空,但钥匙是空的,然后调用oknungestalentry再次删除肮脏的数据,然后将n的长度降低到重新探测到0。
ThreadLocal的容量扩展机制是将原始长度的原始长度乘以2个数组,然后重新计算哈希值,然后将其放入新数组中,然后重新计算扩展阈值。
*首先,通过Key的ThreadLocalHashCode&(Len-1),将相应的枪管放置
*从i搜索i,知道密钥是平等的,然后删除条目,然后执行核对核心,以清理已过期的数据
如今,它主要分析重要方法,例如ThreadLocal的集合Get删除。它还可以解决螺纹局部解决哈希冲突的解决方案,钥匙的弱参考,扩展,检测和灵感清洁元素。