單例模式 併發訪問

2021-06-26 14:28:44 字數 578 閱讀 9634

一、餓漢式  

(多執行緒併發,相對安全)

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.對外暴露公共的...