1.保证线程可见性,禁止指令重排序,但是不能保证原子性
    2.DCL单例模式,对象需要加volatile关键字,禁止指令重排序,防止获取到中间态对象
    线程可见性:缓存一致性协议 intel CPU MESI
    禁止执行重排序:内存屏障
    3.当修饰引用值时,如果引用指向的对象改变了,其他线程是监测不到的。