http://www.iteye.com/topic/13894 http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html