中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java單例模式的實現方式是什么

小億
83
2024-01-23 13:38:20
欄目: 編程語言

Java中實現單例模式的方式有以下幾種:

  1. 餓漢式(Eager Initialization):在類加載時就創建單例對象,并通過靜態方法返回。此方式在多線程環境下是安全的。
public class Singleton {
    private static final Singleton instance = new Singleton();
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        return instance;
    }
}
  1. 懶漢式(Lazy Initialization):在調用獲取單例對象的方法時才創建單例對象。此方式在多線程環境下需要進行線程同步處理。
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  1. 雙重校驗鎖(Double-Checked Locking):在懶漢式的基礎上進行改進,在創建實例時增加了一次判空校驗,減少了不必要的同步開銷。
public class Singleton {
    private volatile static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  1. 靜態內部類(Static Inner Class):利用靜態內部類的特性,實現懶加載并保證線程安全。
public class Singleton {
    private Singleton() {}

    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}
  1. 枚舉(Enum):利用枚舉的特性,實現單例模式。枚舉是線程安全且只會被實例化一次。
public enum Singleton {
    INSTANCE;

    // 需要添加的單例對象的其他方法
}

0
北流市| 仪陇县| 双城市| 澜沧| 平顺县| 石首市| 咸宁市| 温州市| 金湖县| 察哈| 济源市| 安庆市| 涿州市| 海丰县| 商丘市| 三江| 醴陵市| 伊吾县| 德庆县| 定日县| 广灵县| 乐陵市| 梅州市| 修文县| 咸阳市| 广河县| 石泉县| 娱乐| 芜湖市| 丹东市| 宝应县| 莱芜市| 亚东县| 大丰市| 侯马市| 徐闻县| 贺兰县| 绿春县| 遂平县| 大名县| 长垣县|