Double checked locking in Java is broken.

Ref: http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html