ConcurrentHashMap vs Synchronized HashMap
在 和 上使用包装类 、 、 有什么区别?SynchronizedMap
HashMap
ConcurrentHashMap
它是否只是能够在迭代时修改它()?HashMap
ConcurrentHashMap
在 和 上使用包装类 、 、 有什么区别?SynchronizedMap
HashMap
ConcurrentHashMap
它是否只是能够在迭代时修改它()?HashMap
ConcurrentHashMap
同步:HashMap
每个方法都使用对象级锁
进行同步。因此,synchMap 上的 get 和 put 方法获取一个锁。
锁定整个集合是一种性能开销。当一个线程固定在锁上时,其他任何线程都不能使用该集合。
ConcurrentHashMap
在 JDK 5 中引入。
在对象级别没有锁定,锁定的粒度要精细得多。对于 ,锁可能位于哈希映射桶级别
。ConcurrentHashMap
较低级别锁定的效果是,您可以拥有并发读取器和写入器,这对于同步集合是不可能的。这带来了更大的可扩展性。
ConcurrentHashMap
如果一个线程尝试修改它,而另一个线程正在迭代它,则不会抛出它。ConcurrentModificationException
这篇文章 Java 7: HashMap vs ConcurrentHashMap 是一本非常好的书。强烈推荐。
简短的回答:
这两个映射都是接口的线程安全实现。 在需要高并发的情况下实现更高的吞吐量。Map
ConcurrentHashMap
Brian Goetz关于背后的想法的文章非常好读。强烈推荐。ConcurrentHashMap