共計 1117 個字符,預計需要花費 3 分鐘才能閱讀完成。
Java 中實現單例模式的方式有以下幾種:
- 餓漢式(Eager Initialization):在類加載時就創建單例對象,并通過靜態方法返回。此方式在多線程環境下是安全的。
public class Singleton {private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {return instance;
}
}
- 懶漢式(Lazy Initialization):在調用獲取單例對象的方法時才創建單例對象。此方式在多線程環境下需要進行線程同步處理。
public class Singleton {private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}
return instance;
}
}
- 雙重校驗鎖(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;
}
}
- 靜態內部類(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;
}
}
- 枚舉(Enum):利用枚舉的特性,實現單例模式。枚舉是線程安全且只會被實例化一次。
public enum Singleton {
INSTANCE;
// 需要添加的單例對象的其他方法
}
丸趣 TV 網 – 提供最優質的資源集合!
正文完