volatile简要解析

Posted fswhq

tags:

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

在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。

要解决这个问题,只需要把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。  

 volatile不保证原子操作,所以,很容易读到脏数据。 当要访问的变量已在synchronized代码块中,或者为常量时,不必使用volatile。 

 

 

 

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

volatile原理解析

并发编程:全视角解析volatile

死磕 java同步系列之volatile解析

volatile关键字解析

volatile关键字解析

Java并发编程:volatile关键字解析