【发布时间】:2012-08-04 15:09:15
【问题描述】:
我对 volatile 变量如何有效地从“主”内存进行访问有点困惑。它与具有本地副本的变量(非易失性)有何不同?每当多个线程访问非易失性 vs 易失性变量时,典型的工作流程是什么?我的意思是他们如何在幕后工作?
【问题讨论】:
-
看了那个帖子后我不是很清楚,所以我打开了这个问题。我实际上是在询问更多关于工作流程和内存访问而不是概念本身的信息
-
很抱歉,但我认为值得一提的是
volatile的优点之一是它还确保了原语的原子读取。它在 32 位处理器机器上的 64 位变量(如long或double)的情况下很有用,因为它们可以防止在读取变量的前 32 位和后 32 位之间更新变量。 -
感谢您的留言。未声明为 volatile 的 64 位数值变量(double 和 long)。
标签: java volatile non-volatile