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

volatile关键字

时间:2019-01-22 00:37:45      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:cpu   结果   bsp   ola   依赖关系   其他   而在   最新   内存   

volatile关键字有两个特性:

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

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

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

 

######

volatile关键字

标签:cpu   结果   bsp   ola   依赖关系   其他   而在   最新   内存   

原文地址:https://www.cnblogs.com/amunote/p/10301596.html

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