Re:JVM Anatomy Quarks
by MrBuddyCasino on Friday January 31, 2020 @04:12PM
(#22205792)
I was interested in this as well, and yes ReadWriteLocks are horrible[0]. Just using synchronized is a good default that performs well in most scenarios, StampedLocks are good too.
[0] https://blog.overops.com/java-8-stampedlocks-vs-readwriteloc...
About the blog - testing with more threads than cores could be quite misleading, also testing on dual/quad socket vs single one exhibits the effects on coherency traffic a lot more (compared to L3 talk)
Briefly:
- the lock has write a CAS on the =fast= read path, causing coherency traffic and a contention point between the readers. That's it the readers don't scale
- it's quite hard to use correctly, i.e. after read, determining the exclusive/write lock has to be acquired, the read lock has to be released 1st, the write lock acquired and the conditions that causes the grab to be rechecked
- Copy-On-Write should be a preferred solution for most cases, easy to understand and reason about. If not StampedLock is a better alternative.
Re:JVM Anatomy Quarks
by jabba_d_hut on Friday January 31, 2020 @02:24PM
(#22204695)
StampedLocks performs much better than R/W locks.
I am interested in references that back this statement