Java单例模式的几种实现方式
生活随笔
收集整理的這篇文章主要介紹了
Java单例模式的几种实现方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java單例模式的幾種實現方式
在Java 中,單例類只能有一個實例,必須創建自己的唯一實例,單例類必須給所有其他對象提供這一實例。Java 單例模式有很多種實現方式,在這里給大家介紹單例模式其中的幾種。分別是餓漢式,懶漢式,Double CheckLock實現單例,靜態內部類。它們都有相互的優缺點。
適用場景:
需要生成唯一序列的環境。
需要頻繁實例化然后銷毀的對象。
創建對象時耗時過多或者耗資源過多,但又經常用到的對象。
方便資源相互通信的環境。
選擇:
單例對象占用資源少,不需要延時加載,枚舉好于餓漢。
單例對象占用資源多,需要延時加載,靜態內部類好于懶漢式。
一. 餓漢式
線程安全,調用效率高,但是不能延時加載。
//實例化這個類 public class Singleton {private static final Singleton instance = new Singleton();// 私有化構造器private Singleton(){} //創建靜態工廠方法,讓外部可以獲取實例public static Singleton getInstance(){return instance;} }二. 懶漢式
線程安全,調用效率不高,但是能夠延時加載。
//類初始化時,不初始化這個對象(延時加載,真正用的時候再創建) public class Singleton {private static final Singleton instance;// 私有化構造器 private Singleton(){} //方法同步,調用效率低// 創建靜態工廠方法 ,讓外部可以獲取實例public static synchronized Singleton getInstance(){if (instance == null) {instance = new Singleton();}} }三. Double CheckLock實現單例
Double CheckLock 雙重鎖判斷機制(由于JVM底層模型原因,偶爾會出問題,不建議使用),是在懶漢式單例基礎上發展而來的。
public class Singleton {private volatile static Singleton instance; // 私有化構造器private Singleton(){ } //靜態工廠方法,雙重鎖判斷機制public static Singleton newInstance(){if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();} }} return instance;} }四.靜態內部類
線程安全,調用效率高,可以延時加載。
總結
以上是生活随笔為你收集整理的Java单例模式的几种实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode中如何运行git
- 下一篇: Java线程面试题 Top 53