- 1
- 0
- 约1.34千字
- 约 2页
- 2026-07-01 发布于山西
- 举报
put操作源码
inthash=spread(key.hashCode());
对key获取了hashCode,调用了spread算法,获取到了一个hash值
staticfinalintspread(inth){
return(h^(h16))HASH_BITS;
}
他相当于是把hash值的高低16位都考虑到后面的hash取模算法里,这样就可以把hash值
的高低16位的特征都放到hash取模算法来运算,有助于尽可能打散各个key在不同的数组
的位置
降低hash的概率
刚开始,table是null的话,此时就要初始化这个table
U.compareAndSwapInt(this,SIZECTL,sc,-1):CAS操作,sizeCtl=-1
初始化一个table数组,默认的大小就是16
tabAt(tab,i=(n-1)hash),这个就是hash取模的算法,定位的算法,return
(NodeK,V)U.getObjectVolatile(tab,((long)iASHIFT)+ABASE);,数组和hash定位出来的位
置,传递
原创力文档

文档评论(0)