劍指offer ---實現Singleton模式
阿新 • • 發佈:2018-12-11
實現單例
- 懶漢模式 當要第一次呼叫才例項化 避免記憶體浪費 需要加鎖synchronized 才能執行緒安全
//雙重檢查加鎖
public Singleton getInstance() {
//先檢查例項是否為空 不為空進入程式碼塊
if (instance == null) {
//同步塊 執行緒安全地建立例項
synchronized (Singleton.class) {
//再次檢查例項是否為空 為空才真正的建立例項
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
//給方法加上同步
public synchronized Singleton getInstance1() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
- 餓漢模式 類載入時候就例項化了 浪費記憶體
public Singleton2 getInstance(){
return instance;
}