Guarded Suspension: Forces
A class’ methods must be synchronized to make concurrent calls to them safe.
An object has a state that makes it impossible for one of its synchronized methods to complete. To leave that state, another of its synchronized methods must execute. It cannot execute until the first call completes.