饿汉式_静态代码块
public class Singleton { private static Singleton singleton; static { singleton = new Singleton(); } private Singleton() { } public static Singleton get() { return singleton; }}
懒汉式_双重检查
public class Singleton { private static Singleton singleton; private Singleton() { } public static Singleton get() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; }}
懒汉式_静态内部类
public class Singleton { private static class SingletonInstance { private static final Singleton singleton = new Singleton(); } private Singleton() { } public static Singleton get() { return SingletonInstance.singleton; }}
饿汉式_枚举
public enum Singleton { INSTANCE; public void doProcess() { System.out.println("singleton"); }}