java单例模式最优写法

饿汉式
public class Singleton1 {

    public static final Singleton1 INSTANCE = new Singleton1();

    private Singleton1(){

    }
}

使用枚举,更简洁

public enum Singleton2 {
    INSTANCE
}
懒汉式
  1. 考虑线程安全问题,double check(双重校验)
public class Singleton3 {

    public static Singleton3 instance;

    private Singleton3(){}

    public static Singleton3 getInstance() {
        if (instance == null){
            synchronized (Singleton3.class){
                if(instance == null){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    instance = new Singleton3();
                }
            }
        }
        return instance;
    }
}
  1. 使用静态内部类,写法简洁
public class Singleton4 {
    private Singleton4(){}

    private static class Inner{
        public static final Singleton4 INSTANCE = new Singleton4();
    }

    public static Singleton4 getInstance(){
        return Inner.INSTANCE;
    }
}

你可能感兴趣的:(java单例模式最优写法)