一尘不染

ConcurrentHashMap与同步HashMap

java

是用什么包装类之间的差异SynchronizedMap上,HashMapConcurrentHashMap

它只是能够HashMap在迭代(ConcurrentHashMap)的同时进行修改吗?


阅读 281

收藏
2020-09-09

共1个答案

一尘不染

同步HashMap

  1. 每种方法都使用对象级锁进行同步。因此,synchMap上的get和put方法获取一个锁。

  2. 锁定整个集合是性能开销。当一个线程保持该锁时,其他任何线程都不能使用该集合。

ConcurrentHashMap 是在JDK 5中引入的。

  1. 在对象级别没有锁定,锁定的粒度要好得多。对于ConcurrentHashMap,锁定可以处于哈希图存储桶级别。

  2. 较低级别的锁定的结果是您可以拥有并发的读取器和写入器,而这对于同步集合是不可能的。这导致更多的可伸缩性。

  3. ConcurrentHashMap``ConcurrentModificationException如果一个线程试图修改它而另一个线程对其进行迭代,则不会抛出a 。

本文是Java
7:HashMap与ConcurrentHashMap

的很好阅读。强烈推荐。

2020-09-09