0%

设计模式-单例模式

线程安全问题

volatile:保证多线程下的可见性

读volatile:每当子线程读取volatile变量时,都会从主线程重新拷贝一份
写volatile: 每当子线程修改volatile变量时,都会在修改后同步到主线程去

synchronized:对象锁、类锁、方法锁(其它篇有介绍)

public class Singleton {

    private static volatile Singleton instance;

    private Singleton(){
    }

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