public class EagerSingleton {// 类加载时就初始化private static final EagerSingleton instance = new EagerSingleton();// 私有构造函数private EagerSingleton() {}// 全局访问点public static EagerSingleton getInstance() {return instance;}
}
2. 懒汉式(Lazy Initialization)
public class LazySingleton {private static LazySingleton instance;private LazySingleton() {}public static synchronized LazySingleton getInstance() {if (instance == null) {instance = new LazySingleton();}return instance;}
}
3. 双重检查锁(Double-Checked Locking)
public class DCLSingleton {private volatile static DCLSingleton instance;private DCLSingleton() {}public static DCLSingleton getInstance() {if (instance == null) {synchronized (DCLSingleton.class) {if (instance == null) {instance = new DCLSingleton();}}}return instance;}
}
4. 静态内部类(Initialization-on-demand Holder)
public class HolderSingleton {private HolderSingleton() {}private static class Holder {private static final HolderSingleton INSTANCE = new HolderSingleton();}public static HolderSingleton getInstance() {return Holder.INSTANCE;}
}
5. 枚举(Enum Singleton)
public enum EnumSingleton {INSTANCE;public void doSomething() {// 业务方法}
}