單例模式實現方式比較

2021-09-25 18:41:00 字數 1785 閱讀 9392

單例模式實現方式

執行緒安全

延遲載入

反射安全

序列化安全

餓漢模式√×

××懶漢模式(非空判斷)×√

××懶漢模式(方法加鎖)√√

××懶漢模式(雙重檢查鎖)√√

××靜態內部類√√

××列舉√

√√√

/**

* 餓漢

* @author zhouxiaobing

* */

public class singleton implements serializable

private static singleton singleton = new singleton();

public static singleton getinstance()

}

/**

* 懶漢-非執行緒安全

* @author zhouxiaobing

* */

public class singleton implements serializable

private static singleton singleton;

public static singleton getinstance()

return singleton;

}}

/**

* 懶漢-執行緒安全

* @author zhouxiaobing

* */

public class singleton implements serializable

private static singleton singleton;

public static synchronized singleton getinstance()

return singleton;

}}

/**

* 懶漢-雙重校驗鎖

* @author zhouxiaobing

* */

public class singleton implements serializable

private volatile static singleton singleton;// 記憶體可見性

public static singleton getinstance()

}} return singleton;

}}

/**

* 靜態內部類

* @author zhouxiaobing

* */

public class singleton implements serializable

private static class inner

public static singleton getinstance()

}

/**

* 列舉

* @author zhouxiaobing

* */

public enum singleton implements serializable

public class singletontest 

}

public class singletonserializabletest 

}

單例模式的幾種實現方式比較

首先上乙個最簡單的demo public class singleton private static singleton instance new singleton public static singleton getinstance public static void createstri...

單例模式各種實現方式的比較

一 餓漢式單例模式 型別1 餓漢式單例 可用 使用靜態常量,這會保證在類載入時 就初始化乙個a的例項,並且避免了執行緒安全問題。但是有可能該例項永遠不會被用到而導致浪費記憶體。public class a public a getinstance 型別2 餓漢式單例模式 可用 跟a型別,只不過初始化...

單例模式的7種實現方式及比較

多個執行緒要操作同一物件,需要保證物件的唯一性。為了更好的對下面即將介紹的幾種實現方式進行比較,我們定義幾個考量維度 執行緒的安全線 是否懶載入 效能。方法一 餓漢式單例模式 可用 public class badmashsingleton public static badmashsingleto...