java - 如何在java中设置concurrentHashMap的并发级别

标签 java concurrency concurrenthashmap

请告诉我如何在java中设置ConcurrentHashMap的并发级别?如果级别设置得太高或太低会有什么影响?它的内部是如何运作的?

最佳答案

ConcurrentHashMap 构造函数

 public ConcurrentHashMap(int initialCapacity,
                             float loadFactor, int concurrencyLevel) {

您可以根据需要很好地定义并发级别。 关于你的第二个问题。 这是 ConncurrentHashMap (java 1.6) 的 javadoc 注释

 * Ideally, you should choose a value to accommodate as many
 * threads as will ever concurrently modify the table. Using a
 * significantly higher value than you need can waste space and time,
 * and a significantly lower value can lead to thread contention.

因此,理想情况下,如果您不知道 map 可能有多大或将有多少线程访问 map 等信息,最好使用并发的默认值(当前为 16)。

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/ConcurrentHashMap.java

希望有帮助!

关于java - 如何在java中设置concurrentHashMap的并发级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393588/

相关文章:

Java arraylist 找不到构造函数,使用 arrays.aslist

java - 如何获取 IBM WAS 上 jms 主题中的当前消息数

c - 静态变量和线程 (C)

mysql - 是否可以对 MyISAM 表进行非阻塞读取?

java - ConcurrentHashMap:在 Java 中的嵌套并发 HashMap 上使用 merge()

java - 如何实现与LinkedHashMap类似的ConcurrentHashMap?

java - 如何执行并发安全的映射对象操作?

java - Android内部类中EditText转int

java - EJB 中的 Facade 与基于 Spring 的 Web 应用程序中的服务相同吗

Java - CountDownLatch.await() 可以由编译器重新排序吗