Relearning Java Concurrency Control from the Ground Up
This article explores how the JVM monitor behind synchronized actually works, examines the concurrency-control features provided by ReentrantLock, and solves the producer-consumer problem that can arise in concurrent programs. It then improves performance with a lock-striping strategy based on per-user keys.

