我有一个Map,它将被多个线程同时修改.
Java API中似乎有三种不同的同步Map实现:
HashtableCollections.synchronizedMap(Map)ConcurrentHashMap据我所知,这Hashtable是一个旧的实现(扩展过时的Dictionary类),后来经过调整以适应Map界面.虽然它是同步的,但似乎存在严重的可扩展性问题,并且不鼓励新项目.
但是其他两个怎么样?返回的地图Collections.synchronizedMap(Map)和ConcurrentHashMaps 之间有什么区别?哪一种适合哪种情况?
如何将ConcurrentHashMap的性能与HashMap进行比较,特别是.get()操作(我特别感兴趣的是只有少数几个项目的情况,范围可能在0-5000之间)?
有没有理由不使用ConcurrentHashMap而不是HashMap?
(我知道不允许使用空值)
更新
只是为了澄清,显然在实际并发访问的情况下性能会受到影响,但是如何在没有并发访问的情况下比较性能呢?