1.餓漢式
public class singleton
public static singleton getinstance()
}
2.懶漢式
public class singleton()
//雙層檢測鎖
public static singleton getinstance()}}
return instance;
}
3.靜態內部類
public class singleton
private static class singletonfactory
public static getinstance()
//如果該物件被用於序列化,可以保證物件在序列化前後保持一致
public object readresolve()
}
使用內部類來維護單例的實現,jvm內部的機制能夠保證當乙個類被載入的時候,這個類的載入過程是執行緒互斥的。
這樣當我們第一次呼叫getinstance的時候,jvm能夠幫我們保證instance只被建立一次,並且會保證把賦值給instance的記憶體初始化完畢, 這樣我們就不用擔心上面的問題。
同時該方法也只會在第一次呼叫的時候使用互斥機制,這樣就解決了低效能問題。這樣我們暫時終結乙個完美的單例模式。
4.列舉
public enum singleton
單例模式的幾種寫法
所謂單例模式就是確保某乙個類只有乙個例項,並且提供乙個全域性訪問點。例如 執行緒池 快取 對話方塊等等 1 餓漢模式 保證執行緒安全 public class singleton public static singleton getinstance 2 懶漢模式 不保證執行緒安全 public c...
單例模式的幾種寫法
1.懶漢式 public class singleinstance1 private static singleinstance1 instance public static singleinstance1 getinstance return instance 該程式缺點是執行緒不安全 publ...
單例模式的幾種寫法
1.餓漢式 public class singleton 宣告成員變數 private static singleton singleton new singleton 對外提供介面獲取該例項 public static singleton getinstance 2.懶漢式 public clas...