设计模式-单例模式

线程安全问题

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;
}

}