Java Concurrency in Practice
The Java memory model