91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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

小億
82
2024-02-02 09:48:44
欄目: 編程語言

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

  1. 懶漢式(Lazy Initialization): 在第一次使用時才創建實例。線程不安全版本的懶漢式實現如下:
public class Singleton {
    private static Singleton instance;

    private Singleton(){}

    public static Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

可以通過在getInstance()方法上加鎖synchronized來實現線程安全的懶漢式單例模式,但是會影響效率:

public class Singleton {
    private static Singleton instance;

    private Singleton(){}

    public static synchronized Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
  1. 餓漢式(Eager Initialization): 在類加載時就創建實例,線程安全。實現如下:
public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){
        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;
    }
}

使用volatile修飾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;

    public void doSomething(){
        // do something
    }
}

0
武隆县| 镇坪县| 察哈| 枝江市| 清镇市| 同仁县| 乐都县| 辽源市| 曲阳县| 香河县| 天柱县| 东方市| 永春县| 海淀区| 巴东县| 七台河市| 汾阳市| 秦皇岛市| 大英县| 三门县| 华亭县| 洪泽县| 建始县| 鹤庆县| 南木林县| 上高县| 陆丰市| 中山市| 资兴市| 柏乡县| 抚顺县| 浦江县| 射阳县| 新河县| 大化| 准格尔旗| 萝北县| 丹凤县| 日照市| 康马县| 宁阳县|