volatile关键字

Posted amunote

tags:

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

volatile关键字有两个特性:

  1. volatile变量对所有线程的可见性,指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。
  2. volatile变量可以禁止指令重排序优化。

因为JVM要求线程每次使用工作内存中的volatile变量时,都必须从主内存中刷新获取最新的值;执行线程每次修改工作内存中的volatile变量后也必须立刻将之同步回主内存,这样一个线程修改了volatile变量的值,其他线程可以立即得知。

CPU需要能正确处理指令依赖情况以保障程序能得出正确的执行结果。因为修改volatile变量的值之后需要将之立即同步到主内存,这样就无形中使对修改volatile变量之前的操作依赖于修改后同步到内存的操作,这种依赖关系是CPU在指令重排时也无法忽视的,从而在某种程度上禁止了指令重排序。

 

######

以上是关于volatile关键字的主要内容,如果未能解决你的问题,请参考以下文章

24.volatile关键字的作用volatile原理可见性内存屏障volatile性能transient

java里volatile关键字有啥特性?

并发之volatile关键字

C语言 中volatile关键字的用法

Volatile关键字

volatile关键字