一、JMM(Java内存模型,不真实存在)具有三特性:
1.可见性:在多线程环境下,线程A从主内存中克隆实例的值并在自己的内存中修改,修改完成后再放回到主存中,其他线程可以看得见这个值已经被修改,读到的值即为修改过的值。
2.原子性:不可分割的完整性。也即某个线程正在做某个具体业务时,中间不可以被加塞或被分割,需要整体完整,要么同时成功,要么同时失败。
3.有序性。
二、Volatile是什么:Volatile是JVM提供的轻量级的同步机制。也具备三特性:
1.可见性
2.不保证原子性
3.禁止指令重排

三、单例模式volatile分析:
public class SingletonDemo {

private static volatile SingletonDemo instance = null;
//DCL(Double Check lock 双端检测索机制)
public static SingletonDemo getInstance() {
if (instance == null) {
synchronized (SingletonDemo.class) {
if (instance == null) {
instance = new SingletonDemo();
}
}
}
return instance;
}

private SingletonDemo() {

}

}