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