(1)餓漢式(執行緒安全)
該方式沒有執行緒安全問題,當類被解除安裝時,靜態變數被摧毀,並釋放所占有的記憶體,因此在某些特定條件下會耗費記憶體。
package cn.edu.bjfu.main;
public class maintest
}class teacher
//使外界可以通過類名. 來呼叫
public static teacher getinstance( )
}
(2)懶漢式(執行緒不安全的)
package cn.edu.bjfu.main;
public class maintest
}class teacher
//使外界可以通過類名. 來呼叫
public static teacher getinstance()
return t;
}}
因此在某些特定條件下會節約了記憶體。在多執行緒環境中,這種實現方法是完全錯誤的,根本不能保證單例的狀態。
(3)懶漢式(優化為執行緒安全)
package cn.edu.bjfu.main;
public class maintest
}class teacher
//使外界可以通過類名. 來呼叫
public static synchronized teacher getinstance()
return t;
}}
在多執行緒情形下,synchronized方法通常效率低。
(4)dcl雙檢鎖機制改進優化懶漢式
package cn.edu.bjfu.main;
public class maintest
}class teacher
//使外界可以通過類名. 來呼叫
public static teacher getinstance()
}} return t;
}}
java設計模式 單例設計模式
public class main 餓漢式 空間換時間 多執行緒訪問不會建立多個物件 author admin class singleton 2建立本類物件 private static singleton s new singleton 3對外提供公共的訪問方法 public static si...
Java設計模式 單例模式
單例模式 singleton 顧名思義,就是乙個類只有乙個例項。作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。顯然單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。從具體...
java設計模式 單例模式
這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單 一 獨苗的意思,那什麼是獨乙份呢?你的思維是獨乙份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件 皇帝中國的歷史上很少出現兩個皇帝並存的時期,是有,但不多,那我們就認為皇帝是個單例模式,在這...