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

如何为ConcurrentHashMap使用并设置适当的并发级别?

仉宪
2023-03-14
问题内容

我正在并发hashmap中处理大约1000个元素。默认并发级别为16。任何人都可以通过一些算法或因素帮助我,从中我可以确定适合于我的方案的并发级别,或者并发级别以何种方式影响多线程的处理。

   ConcurrentHashMap<String, String> map=new ConcurrentHashMap<String, String>(500,1,20);

我的并发级别(虚拟值)为20。需要进行有效设置


问题答案:

根据文档:

更新操作之间允许的并发性由可选的concurrencyLevel构造函数参数(默认值16)指导,该参数 用作内部调整的提示
。该表在内部进行了分区,以尝试允许指定数量的并发更新而没有争用。因为散列表中的放置本质上是随机的, 所以实际的并发性会有所不同。
理想情况下,您应该选择一个值以容纳与并发修改表一样多的线程 使用比您需要的高得多的值会浪费空间和时间,而低得多的值会导致线程争用。

因此,您需要回答1个问题:

可以同时修改表的线程数是多少?



 类似资料:
  • 我正在使用GWT2.5和GoogleMap Api3。 我有两种情况:1.我有地图的中心,上面有几个标记。2.任何一个县,上面有几个标记。 因此,地图应该适当缩放以适应标记。 有没有办法自动检测缩放级别?

  • 我正在编写一个基于Java的Kafka消费者应用程序。我正在为我的应用程序使用kafka-clients、Spring Kafka和Spring boot。虽然Spring boot让我可以轻松地编写Kafka消费者(无需真正编写ConcurrentKafkaListenerContainerFactory、ConsumerFactory等),但我希望能够为这些消费者定义/定制一些属性。然而,我无

  • 前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%。 final HashMap<String, String> map = new HashMap<String, String>(2); for (int i = 0; i < 10000; i++) { new Threa

  • 问题内容: 也许这是一个愚蠢的问题,但我似乎找不到一个明显的答案。 我需要一个仅包含唯一值的并发FIFO队列。尝试添加队列中已经存在的值只会忽略该值。如果不是为了线程安全,那将是微不足道的。在Java中是否存在数据结构,或者在Interweb上是否存在代码snipit表现出这种行为? 问题答案: 如果您想要比完全同步更好的并发性,那么我知道有一种方法可以使用ConcurrentHashMap作为支

  • 高级并发对象 目前为止,之前的教程都是重点讲述了最初作为 Java 平台一部分的低级别 API。这些API 对于非常基本的任务来说已经足够,但是对于更高级的任务就需要更高级的 API。特别是针对充分利用了当今多处理器和多核系统的大规模并发应用程序。 本章,我们将着眼于 Java 5.0 新增的一些高级并发特征。大多数功能已经在新的java.util.concurrent 包中实现。Java 集合框

  • 问题内容: 当我将网站放在开发环境中时-它是url: **testurl.com** 现在在生产服务器上,我的codeigniter应用程序的地址必须为 **someurl.com/mysite/** 我将它移到那里,每次尝试运行某些功能时,例如 / home / test- 它使我进入 **someurl.com/home/test-** 这是错误的。 它必须是 **someurl.com/my