同步
HashMap:
每种方法都使用对象级锁进行同步。因此,synchMap上的get和put方法获取一个锁。
锁定整个集合是性能开销。当一个线程保持该锁时,其他任何线程都不能使用该集合。
ConcurrentHashMap是在JDK 5中引入的。
在对象级别没有锁定,锁定的粒度要好得多。对于
ConcurrentHashMap
,锁定可以处于哈希图存储桶级别。较低级别的锁定的结果是您可以拥有并发的读取器和写入器,而这对于同步集合是不可能的。这导致更多的可伸缩性。
ConcurrentHashMap``ConcurrentModificationException
如果一个线程试图修改它而另一个线程对其进行迭代,则不会抛出a 。
本文是Java
7:HashMap与ConcurrentHashMap
的很好阅读。强烈推荐。



