我有一个Map,它将被多个线程同时修改.
Java API中似乎有三种不同的同步Map实现:
HashtableCollections.synchronizedMap(Map)ConcurrentHashMap据我所知,这Hashtable是一个旧的实现(扩展过时的Dictionary类),后来经过调整以适应Map界面.虽然它是同步的,但似乎存在严重的可扩展性问题,并且不鼓励新项目.
但是其他两个怎么样?返回的地图Collections.synchronizedMap(Map)和ConcurrentHashMaps 之间有什么区别?哪一种适合哪种情况?
我已经在某处读过ConcurrentHashMap,整个地图对象没有被锁定,而是在Map的一部分上进行锁定.
有人可以详细说明何时锁定进入图片?
是否正确读取Map时没有涉及到锁定,但在更新时只使用锁定?