Compiler techniques for high performance sequentially consistent java programs
Concurrent programming: the Java programming language