package com.lius.test;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* (JAVA)ConcurrentHashMap initialCapacity 手动计算初始化容量大小过程
*
* 第一步:int cap = ((initialCapacity>=(MAXIMUM_CAPACITY/2))?MAXIMUM_CAPACITY:
* initialCapacity+(initialCapacity/2) + 1);
* initialCapacity如果大于最大值的一半,cap直接取最大值,否则取initialCapacity+initialCapacity/2再+1的值作为cap变量值
* 第二部: cap = (cap-1)|/2|/4|/8|/16|/32; 解释:|/ => [cap/=2; cap|=cap;]
* cap先自减1,然后除以2在进行或运算,...除以32再进行或运算,取最终结果
* 第三步: cap = (cap<0)?1:(cap>=MAXIMUM_CAPACITY)?MAXIMUM_CAPACITY:cap+1;
* 如果cap小于0,cap取1,如果大于最大值,cap就取最大值,如果cap在0与最大值之间,cap就取cap+1
* @author lius
*/
public class testMap {
private static final int MAXIMUM_CAPACITY = 0x40000000;
//initialCapacity = 64
private MapmapContainer = new ConcurrentHashMap<>(64);
//mainPro

本文详细介绍了如何手动计算JAVA ConcurrentHashMap的初始容量大小。通过一系列计算步骤,包括将初始容量与最大容量比较,进行位操作来调整容量,确保容量在合法范围内。示例中,初始容量为64,经过计算得到最终的容量为128。
最低0.47元/天 解锁文章
1141

被折叠的 条评论
为什么被折叠?



