溫馨提示×

java中什么是單例

小億
109
2024-01-05 18:37:38
欄目: 編程語言

在Java中,單例指的是一個類只能創(chuàng)建一個實(shí)例對象的設(shè)計(jì)模式。這意味著當(dāng)一個類的實(shí)例已經(jīng)存在時,再次創(chuàng)建該類的實(shí)例時,將返回已存在的實(shí)例對象。單例模式通常用于需要全局訪問點(diǎn)、資源共享、控制實(shí)例數(shù)量等場景。

實(shí)現(xiàn)單例模式可以通過以下幾種方式:

  1. 餓漢式單例模式:在類加載時就創(chuàng)建實(shí)例對象,保證只有一個實(shí)例對象。
public class Singleton {
    private static Singleton instance = new Singleton();
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        return instance;
    }
}
  1. 懶漢式單例模式:在需要使用實(shí)例對象時才創(chuàng)建實(shí)例對象,通過雙重檢查鎖定(double-checked locking)來保證線程安全。
public class Singleton {
    private static volatile Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  1. 靜態(tài)內(nèi)部類單例模式:將實(shí)例對象的創(chuàng)建延遲到靜態(tài)內(nèi)部類的加載階段,保證線程安全且延遲加載。
public class Singleton {
    private Singleton() {}
    
    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }
    
    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}

以上是常用的三種實(shí)現(xiàn)單例模式的方式,根據(jù)具體的需求和場景選擇適合的方式。

0