單例模式實現方式
執行緒安全
延遲載入
反射安全
序列化安全
餓漢模式√×
××懶漢模式(非空判斷)×√
××懶漢模式(方法加鎖)√√
××懶漢模式(雙重檢查鎖)√√
××靜態內部類√√
××列舉√
√√√
/**
* 餓漢
* @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...