一、餓漢式
(多執行緒併發,相對安全)
class single
private static final single s = new single();
public static single getinstance()
}
二、懶漢式
class single
private static single s = null;
public static single getinstance()
}
懶漢式,延遲載入模式,會出現執行緒安全問題;
解決方式一:加同步(同步函式 或 同步**塊)
鎖→→single.class
缺點是:效率低!
解決方式二:
可以通過 if 對單例物件的雙重判斷形式
public static single getinstance()
}return s;
}
單例模式併發
在研究單例模式的時候,為了保證單例的懶載入是同步的,我們通常會選擇乙個duoble check的方法來保證只有第一次才new物件。1.雙重檢測同步延遲載入 如下 關於volatile的作用在這裡就是保證在new出物件的那一立馬寫入主存,同時通知其他執行緒的他們的cache是無效的,這樣instanc...
單例模式懶載入併發
單例雖然沒有快取寫的那麼平凡,如果在getinstance方法上加sychonize會大大影響效能,單例的寫只有在第一使用時才會寫。使用讀寫鎖操作,基本上都上的讀鎖,對其他執行緒訪問沒有影響public class singleton public static singleton getinsta...
單例模式 單例模式
餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...