Also known as PessimisticLocking.
Typical synchronization techniques are LockBasedSynchronization:
- Semaphores,
- Monitors, or
- Messages (like using regular queues, but interprocess).
This division is most noticed in Unix, except that instead of Monitors, Unix has SharedMemory, which is just a communication mechanism which requires synchronization.
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