ConcurrentHashMap中的剂量段存在错误的共享问题?

Tri*_*Lee 5 java concurrency jvm false-sharing

java.util.concurrent.ConcurrentHashMap使用Segment数组as,Mutex并且Segment Object小于缓存行。

这会导致虚假共享吗?

Pet*_*rey 2

虽然段很小,但这不是多线程支持发生的地方。它扩展了使用 Sync 对象的 ReentrantLock,该对象扩展了使用 Node 对象的 AbstractQueuedSchronizer。所有这些对象都将作为一个组进行复制,并且可能间隔得相当好。这将取决于 GC 的实现方式来完成此操作,但对于 Hotspot 来说,它是以与发现相反的顺序复制的(即深层复制),因此这可能没问题。