Also known as PessimisticLocking.
Typical synchronization techniques are LockBasedSynchronization:
JavaLanguage has monitors and nothing else. This is because Monitors are easier to use and they look a lot like classes. Besides, any of the three can be implemented using either of the other two.
And then LockFreeSynchronization was born.
Advanced LockBasedSynchronization: RendezVous, ReadWriteLock.
See: SynchronizationStrategies