返回信息流《Java并发编程实战》5.2.1节
倒数一二段提到,
在ConcurrentHashMap(简写为CHM)中没有实现对Map加锁以提供独占访问。
……
只有当应用程序需要加锁Map以进行独占访问时,才应该放弃使用CHM。
对应的英文版原文是:
Only if your application needs to lock the map for exclusive access is CHM not an appropriate drop-in replacement.
JavaDoc中对于CHM的描述有这么一句:
A hash table supporting full concurrency of retrievals and high expected concurrency for updates. This class obeys the same functional specification as Hashtable, and includes versions of methods corresponding to each method of Hashtable. However, even though all operations are thread-safe, retrieval operations do not entail locking, and there is not any support for locking the entire table in a way that prevents all access. This class is fully interoperable with Hashtable in programs that rely on its thread safety but not on its synchronization details.
我的问题是:
这些文字是不是意思为:
不能对CHM对象加锁?
但是我自己测试的时候,对CHM对象加锁并不会报编译错误
如果确实不能对CHM对象加锁的话,
那么加锁后,在运行时候,会产生什么样的undesirable result?
这是一条镜像帖。来源:北邮人论坛 / java / #50254同步于 2016/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于对ConcurrentHashMap对象上锁的疑惑
andand16
2016/5/13镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。