Singleton:用于單線程應用程序
public class Singleton { private Singleton(){} //在自己內(nèi)部定義自己一個實例,是不是很奇怪? private static Singleton instance = new Singleton(); //這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問 |
Double-Checked Locking:用于多線程應用程序
public class Singleton {
private static Singleton instance = null; } |
Double-Checked Locking在java實際上無法得到預期的效果,不能保證singleton的正確性。
參考:(英文)
http://gee.cs.oswego.edu/dl/cpj/jmm.html
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
?