volatile关键字详解

烂漫一生 提交于 2020-01-01 05:00:25

我们经常这样写单例模式:

public class LzySingleInstance {

    public static volatile LzySingleInstance lzySingleInstance;

    private LzySingleInstance(){

    }

    public static LzySingleInstance getLzySingleInstance(){
        if (lzySingleInstance == null){
            synchronized (LzySingleInstance.class){
                if (lzySingleInstance == null){
                    lzySingleInstance = new LzySingleInstance();
                }
            }
        }
        return lzySingleInstance;
    }

}

那么,有没有思考过一个问题:volatile到底是什么作用?

volatile的特性:

1.线程可见性;

一个线程操作了对象,其他线程立马可见。

2.禁止重排序;

保证对象被实例化完成!

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!