Java單例設計模式,有多種實現方式,下面介紹一下比較著名的一些實現方式
餓漢式
這種設計模式簡單,且沒有多線程安全問題,一般實際開發時選用這種方式。
class HungeryDemo { private HungeryDemo(){} private static final HungeryDemo instance = new HungeryDemo(); public static HungeryDemo getInstance() { return instance; } }
2.懶漢式
這種模式,會延遲加載,效率較高。
這種設計模式較爲複雜,存在多線程安全問題。可以用同步函數或同步代碼塊,爲了避免每次都要
判斷鎖,採用同步代碼塊加雙重判斷的方式來解決線程安全問題。注意鎖應該是該類的字節碼文件
class LazyDemo { private LazyDemo(){} private static LazyDemo instance = null; public static LazyDemo getInstance() { if(instance==null) { synchronized(LazyDemo.class) { if(instance==null) { instance = new LazyDemo(); } } } return instance; } }