1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Merge pull request #1205 from tangj1992/patch-1

Update ConcurrentHashMap源码+底层数据结构分析.md
This commit is contained in:
Guide哥 2021-05-24 15:53:33 +08:00 committed by GitHub
commit 7f29c42e77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -91,7 +91,7 @@ public ConcurrentHashMap(int initialCapacity,float loadFactor, int concurrencyLe
总结一下在 Java 7 中 ConcurrnetHashMap 的初始化逻辑。
1. 必要参数校验。
2. 校验并发级别 concurrencyLevel 大小,如果大于最大值,重置为最大值。无构造**默认值是 16.**
2. 校验并发级别 concurrencyLevel 大小,如果大于最大值,重置为最大值。无构造**默认值是 16.**
3. 寻找并发级别 concurrencyLevel 之上最近的 **2 的幂次方**值,作为初始化容量大小,**默认是 16**
4. 记录 segmentShift 偏移量,这个值为【容量 = 2 的N次方】中的 N在后面 Put 时计算位置时会用到。**默认是 32 - sshift = 28**.
5. 记录 segmentMask默认是 ssize - 1 = 16 -1 = 15.