Description should include the following:
- Synchronization is a process of coordinating the activities of two or more threads.
- Java has a complete subsystem devoted to synchronization.
- Synchronization is most commonly needed when two or more threads need access to a shared resource that can be used by only one thread at a time.
- Synchronization is used when one thread is waiting for an event that is caused by another thread.
- All objects can be synchronized
- The key to synchronization is the concept of the monitor, which controls access to an object and implements the concept of a lock.