The "Double-Checked Locking is Broken" Declaration -- A discussion of Singlton Pattern Imp

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

Double-Checked Locking: lock the critical area will affect the performance, so check one more time to assure the locking action is necessary.