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