Java ConcurrentHashMap中的分割
我是Java世界的新手,我在探索ConcurrentHashMap API时发现:Java ConcurrentHashMap中的分割,java,hashmap,concurrenthashmap,Java,Hashmap,Concurrenthashmap,我是Java世界的新手,我在探索ConcurrentHashMap API时发现: static final int DEFAULT_INITIAL_CAPACITY = 16; static final float DEFAULT_LOAD_FACTOR = 0.75F; static final int DEFAULT_CONCURRENCY_LEVEL = 16; static final int MAXIMUM_CAPACITY = 1073741824; static
static final int DEFAULT_INITIAL_CAPACITY = 16;
static final float DEFAULT_LOAD_FACTOR = 0.75F;
static final int DEFAULT_CONCURRENCY_LEVEL = 16;
static final int MAXIMUM_CAPACITY = 1073741824;
static final int MAX_SEGMENTS = 65536;
static final int RETRIES_BEFORE_LOCK = 2;
final Segment<K, V>[] segments;
final Segment<K, V> segmentFor(int paramInt)
{
return this.segments[(paramInt >>> this.segmentShift & this.segmentMask)];
}
static final int DEFAULT\u INITIAL\u CAPACITY=16;
静态最终浮动默认荷载系数=0.75F;
静态最终int默认并发级别=16;
静态最终int最大容量=1073741824;
静态最终整数最大分段数=65536;
静态最终整数在锁定=2之前重试;
最终段[]段;
最终段分段(int参数)
{
返回this.segments[(参数>>>this.segmentShift和this.segmentMask)];
}
ConcurrentHashMap中分段的基本原理是什么?为什么使用它?请提供有关分段概念的更多建议。并发哈希映射将其内容分成多个分段,以减少编写器锁争用
concurrencyLevel
参数定义了段的数量。默认值为16。为了补充其他重要答案,ConcurrentHashMap将映射划分为若干段(基于创建映射时设置的并发级别或默认并发级别16)
同一段内的并发读取获取最近更新的值,读取不需要锁,也不被阻止。不同段中的写入可以同时发生,但是,同一段中的两次写入可能会阻塞
更多信息请访问:完美的解释谢谢,您能告诉我一些url在哪里,它的图表或以图形的方式显示它是如何划分的,以便我能掌握更多信息这里有一个图表:您能分享更多类似的url吗,以便数据结构部分更加清晰。。!!