当前位置: 首页 > 面试题库 >

ConcurrentHashMap中的细分

茅涵映
2023-03-14
问题内容

我是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)];
  }

ConcurrentHashMap中的细分基础是什么,为什么要使用它?请提供更多有关细分概念的建议。


问题答案:

并发哈希图将其内容划分为多个段,以减少编写者锁争用。

concurrencyLevel参数定义段数。默认为16。



 类似资料:
  • 问题内容: Java 的用途是什么?有什么好处?它是如何工作的?示例代码也将很有用。 问题答案: 关键是要提供线程安全的实现。多个线程可以对其进行读写,而没有机会接收到过时或损坏的数据。 提供自己的同步,因此您不必显式同步对其的访问。 的另一个功能是它提供了该方法,如果指定的键不存在,它将 自动 添加一个映射。考虑以下代码: 此代码不是线程安全的,因为另一个线程可以在到和的调用之间添加映射。正确的

  • 问题内容: Java中的ConcurrentHashMap和Hashtable有什么区别? 对于线程化应用程序,哪个更有效? 问题答案: 使用多个存储桶来存储数据。这样可以避免读取锁定,并大大提高了性能。两者都是线程安全的,但是使用显然可以赢得性能。 从using 读取时,没有锁,与之相反,所有操作都只是简单地同步了。 在Java的旧版本中发布,而Java 5+ 则是。 在单线程应用程序中使用是最

  • 本文向大家介绍java基于ConcurrentHashMap设计细粒度实现代码,包括了java基于ConcurrentHashMap设计细粒度实现代码的使用技巧和注意事项,需要的朋友参考一下 细粒度锁:        java中的几种锁:synchronized,ReentrantLock,ReentrantReadWriteLock已基本可以满足编程需求,但其粒度都太大,同一时刻只有一个线程能进

  • 问题内容: Java 8中引入了一个新的computeIfAbsent API。ConcurrentHashMap 实现它的javadocs 状态如下: 如果指定的键尚未与值关联,则尝试使用给定的映射函数计算其值,除非为null,否则将其输入此映射。整个方法调用是原子执行的,因此每个键最多可应用一次该功能。在进行计算时,可能会阻止其他线程在此映射上进行的某些尝试的更新操作,因此计算应简短而简单,并

  • 本文向大家介绍JDK1.8中的ConcurrentHashMap使用及场景分析,包括了JDK1.8中的ConcurrentHashMap使用及场景分析的使用技巧和注意事项,需要的朋友参考一下 ConcurrentHashMap 的初步使用及场景:   ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以ConcurrentHashMap 在并