1. Essentials
In this tutorial we will see how to use the synchronized modifier in Java.
In this tutorial we will see how to use the volatile keyword in Java.
2. Locks
In this tutorial we will implement an explicit lock in Java using the synchronized statement together with the wait/notify idiom.
In this tutorial we will see how to synchronize access to shared resources using a Lock implementation in Java.
This article covers Read/Write locks in Java (ReentrantReadWriteLock implementation)
This article covers lock waiting conditions in Java (java.util.concurrent.locks.Condition)