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.