美文网首页
volatile关键字

volatile关键字

作者: 怒放的生命_浴火重生 | 来源:发表于2018-03-08 09:18 被阅读0次

    让处于CPU高速缓存里的数据副本在修改后立刻更新回主内存,同时,cpu每次在使用数据副本里的值时,总是去主内存中拉值,这就做到了通常所说的可见性。

    volatile不保证数据的原子性,因此性能要优于synchronized,但同时也只能应用于一些特殊场景,比如:

    1、状态标记量

    volatile boolean inited = false;

    //线程1:

    context = loadContext(); 

    inited = true;           

    //线程2:

    while(!inited ){

    sleep()

    }

    doSomethingwithconfig(context);

    2、double check

    class Singleton {

        private volatile static Singleton instance = null;

        privateSingleton() {

        }

        public static Singleton getInstance() {

            if (instance==null) {

                synchronized(Singleton.class) {

                    if(instance==null)

                        instance = newSingleton();

                }

            }

            returninstance;

        }

    }

    相关文章

      网友评论

          本文标题:volatile关键字

          本文链接:https://www.haomeiwen.com/subject/sbqrfftx.html