有時候我們需要對外呈現只有乙個物件,簡單來說就是講物件私有化,像資料那樣,只能通過get方法得到。這裡使用doublechecking來進行該操作,即在get方法裡面加入兩個判斷該物件是否為空,同時為了避免指令重排導致執行緒獲得空物件,加入volatile,而且私有化構造器。
public class doublechecking
private synchronized static doublechecking getdoublechecking()
if(instance==null)
return instance;
}public static void main(string args) );
t.start();
system.out.println(getdoublechecking());
}
DCL單例模式
單例模式 外部不能new物件,類的內部有且只有乙個物件,僅僅用乙個靜態方法與外界進行互動。public class doublecheckedlocking 外部只能通過這個get方法和此物件進行交流 public static doublecheckedlocking getinstance 繫結...
單例模式的DCL問題
剛剛寫完靜態 塊問題,突然想到之前單例模式的坑,雖然解決辦法知道了,但是之前的原理不太明白,剛剛突然想清楚了。感謝大神 餓漢式 class single 私有化建構函式。private static single s new single 建立私有並靜態的本類物件。public static sin...
多執行緒 DCL單例模式
package others dcl單例模式 懶漢式套路基礎上加入併發控制,保證在多執行緒環境下,對外存在乙個物件 1 構造器私有化 避免外部new構造器 2 提供私有的靜態屬性 儲存物件的位址 3 提供公共的靜態方法 獲取屬性 author public class doublecheckedlo...