Java Concurrent Programming (7)
7. Double-Checked Locking
双重检查锁定机制,是一个老生常谈的问题了。双重检查锁定机制已经被广泛的引用,特别是在多线程环境下的懒加载实现上。但是,如果没有额外的同步,它不能独立可靠的运行在Java平台。看这段代码:
class Singleton { private static Singleton instance = new Singleton();}
Java语言规定,字段的初始化是从被引用后,而且所有的线程将从字段初始化后进行相应的操作。
Reference :
http://www.cs.umd.edu/~pugh/java/memoryModel/
http://gee.cs.oswego.edu/dl/cpj/jmm.html