美文网首页
volatile关键字的使用场景

volatile关键字的使用场景

作者: 丿九尾狸猫 | 来源:发表于2018-07-11 16:11 被阅读6次

    1.使用volatile白能量作为状态标志。在该场景中,应用程序的某个状态由一个线程设置,其他线程会读取该状态并作为下一步计算依据。这是适用volatile变量作为同步机制的好处是一个线程能够“通知”另外一个线程某个事件的发生,而这些线程有无需因此而使用锁,避免了锁的开销和相关问题。

    2.使用volatile保障可见性。

    3.使用volatile代替锁。当多个线程共享一个变量(而非一组变量)时,通常需要使用锁来保障对这些变量的更新操作的原子性,以避免数据不一致。利用volatile关键字写的原子性,将这一组状态变量封装成一个对象,将更新操作通过新建对象并将该对象赋值给volatile变量来实现。

    4.实现简易版读写锁。通过volatile变量和锁的混合使用实现;锁保障写操作的原子性,volatile保证读操作的可见性。但这种读写锁允许线程可以读取到共享变量的非最新值。
    public class Counter{
    private volatile long count = 0;
    public long value(){
    return count;
    }

    public void increment{
    synchorized(this){
    count++;
    }
    }
    }

    相关文章

      网友评论

          本文标题:volatile关键字的使用场景

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