小编典典

ConcurrentHashMap 与同步 HashMap

all

SynchronizedMap在 aHashMap和上使用包装类 , 有什么区别ConcurrentHashMap

它只是能够HashMap在迭代它时修改(ConcurrentHashMap)?


阅读 46

收藏
2022-08-24

共1个答案

小编典典

同步HashMap

  1. 每个方法都使用 object level lock. 所以 synchMap 上的 get 和 put 方法获取了一个锁。

  2. 锁定整个集合是一种性能开销。当一个线程持有锁时,没有其他线程可以使用该集合。

ConcurrentHashMap在 JDK 5 中引入。

  1. 在对象级别没有锁定,锁定的粒度要细得多。对于 a ConcurrentHashMap,锁可能在 a hashmap bucket level

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

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

这篇文章Java 7: HashMap vs
ConcurrentHashMap

是一本很好的读物。强烈推荐。

2022-08-24