码迷,mamicode.com
首页 > 其他好文 > 详细

volatile简要解析

时间:2018-01-20 22:50:30      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:声明   常量   rac   而不是   sync   container   ola   代码   本地   

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

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

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

 

 

 

volatile简要解析

标签:声明   常量   rac   而不是   sync   container   ola   代码   本地   

原文地址:https://www.cnblogs.com/fswhq/p/volatile.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!