单例模式

线程安全的两种方式:双重校验锁和静态内部类,推荐使用静态内部类的方式

1、双重校验锁

public class SingletonDemo7 {

    private volatile static SingletonDemo7 singletonDemo7;

    private SingletonDemo7(){}

    public static SingletonDemo7 getSingletonDemo7(){

        if(singletonDemo7 ==null) {

            synchronized(SingletonDemo7.class) {

                if(singletonDemo7 ==null) {

                    singletonDemo7 = new SingletonDemo7();

                }

            }

        }

        return singletonDemo7;

    }

}

2、静态内部类

publicclass SingletonDemo5 {

    private static class SingletonHolder{

        private static final SingletonDemo5 instance =new SingletonDemo5();

    }

    private SingletonDemo5(){}

    public static final SingletonDemo5 getInsatance(){

        return SingletonHolder.instance;

    }

}

你可能感兴趣的:(单例模式)