concurrntHashMap可以保证真正的线程安全性和并发性吗?

J.E*_*E.Y 3 java concurrency multithreading concurrenthashmap

我们知道ConcurrentHashMap可以提供对多个线程的并发访问以提高性能,并且在这个类中,段是同步的(我是对的吗?).问题是,这个设计可以保证线程安全吗?假设我们有30多个线程在ConcurrentHashMap实例中访问和更改由同一个键映射的对象,我的猜测是,他们仍然需要排队,不是吗?

从我的回忆中,"Java Concurrency in Practice"一书中说ConcurrentHashMap提供了并发读取和相当级别的并发写入.在上述场景中,如果我的猜测是正确的,性能不会比使用Collection的静态同步包装api更好?

谢谢你澄清,约翰

Rob*_*bin 6

您仍然必须同步对正在修改的对象的任何访问权限,并且您怀疑对相同密钥的所有访问权仍将存在争用.性能的提高来自于访问不同的密钥,这当然是更典型的情况.

  • @irreputable:我认为这个答案是指单个映射值对象(而不是映射本身)的并发突变,当然`ConcurrentHashMap`根本不会有帮助.问题不是很清楚,但这听起来像第一段所说的那样. (2认同)