Intent: The Double-Checked Locking optimization AntiPattern reduces contention and synchronization overhead whenever CriticalSections of code need to acquire locks just once, but must be thread-safe when they do acquire locks.
http://www.cs.wustl.edu/~schmidt/PDF/DC-Locking.pdf
Related Patterns: LockPattern
This is an AntiPattern because in most languages it doesn't work (DoubleCheckedLockingIsBroken, CppDoubleCheckLock).
See EffectiveJava by JoshuaBloch.