单例模式

1.双重检查锁

public class Singleton {

    private static volatile Singleton singleton;

    private Singleton(){}

    public static Singleton getSingleton(){
        if (singleton ==null){
            synchronized (Singleton.class){
                if (singleton==null){
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}

2.静态内部类的方式

public class Singleton {

    private Singleton(){}

    private static class SingletonInstance{
        private static final Singleton SINGLETON = new Singleton();
    }

    public static Singleton getInstance(){
        return SingletonInstance.SINGLETON;
    }
}

这两种方式都可以,线程安全、延迟加载、效率高

posted @ 2022-03-26 18:28  程序员hg  阅读(13)  评论(0编辑  收藏  举报