Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ConcurrentHashMap中的分割_Java_Hashmap_Concurrenthashmap - Fatal编程技术网

Java ConcurrentHashMap中的分割

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

我是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 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吗,以便数据结构部分更加清晰。。!!