Thread Synchronization
If a Java class has synchronized methods, each object of the class behaves
like a monitor: The synchronized methods guarantee mutual exclusion of the
accessing threads. A thread can wait for a condition within a synchronized
method until another thread notifies the waiting thread that the condition
may be fulfilled.
Design
Documentation
Source Code