看完这篇volatile volatile什么用( 三 )


使用场景由于volatile并不能保证线程安全,并且我们书写的代码中绝大部分都不是原子操作,所以volatile的使用场景其实非常有限,想要正确的使用volatile关键字,需要遵循以下两点:

  • 对volatile变量的写操作不依赖当前值
  • volatile变量不包含在含有其它变量的不变式中
说得通俗一点就是:volatile只能作为一个独立变量使用,通常就是用于各种flag 。比如这篇文章:如何优雅的中断线程 。倒数第二个例子便是使用了volatile关键字 。
volatile变量的++操作正是违反了第一点,所以不算是正确的用法 。
补充【看完这篇volatile volatile什么用】我们总是在说,CPU寄存器的存取速度和内存(Memory)的速度相差了好几个数量级,内存与硬盘相差好几个数量级,但是他们到底差多少呢,一张图就可以解决这个问题 。
看完这篇volatile volatile什么用

文章插图
总结仅仅依靠volatile关键字无法保证线程安全,但是理解volatile关键字的工作原理非常重要 。
作者:Sicimike
原文链接:https://blog.csdn.net/Baisitao_/article/details/100942368