volatile关键字的使用场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了volatile关键字的使用场景相关的知识,希望对你有一定的参考价值。

参考技术A 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关键字的使用场景的主要内容,如果未能解决你的问题,请参考以下文章

Java 并发编程线程共享变量可见性 ( volatile 关键字使用场景分析 | MESI 缓存一致性协议 | 总线嗅探机制 )

Java 并发编程线程简介 ( 原子操作 | volatile 关键字使用场景 )

java volatile关键字

Java volatile关键字解惑

彻底理解 volatile 关键字及应用场景,面试必问,小白都能看懂!

volatile关键字使用