懒汉式

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

饿汉式

public class Singleton1 {
    private static Singleton1 instance = new Singleton1();
    private Singleton1(){}
    public static Singleton1 getInstance(){
        return instance;
    }
}

双重锁

public class Singleton2 {
    private volatile static Singleton2 instance;
    private Singleton2(){}
    public static Singleton2 getInstance(){
        if (instance==null){
            synchronized (Singleton2.class){
                if (instance==null){
                    instance = new Singleton2();
                }
            }
        }
        return instance;
    }
}