我是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 在并