易失变量的内存一致性错误?



据说易失变量可以用来实现同步。但是,易失性变量仍然容易受到内存一致性错误的影响。为什么会这样?

易失性与同步无关。

易失性变量

可降低内存一致性错误的风险,因为对易失性变量的任何写入都会与同一变量的后续读取建立发生前关系。

这是JavaDoc的链接

没有易失性变量本身不受内存一致性错误的影响。易失性变量建立内存屏障并尊重发生之前的关系,因此写入被刷新到主内存,以便读取是一致的。操作必须是原子的

假设我是 int。

i=10还可以

i++不是原子的,它相当于读取当前值递增,然后推动它。

对于boolean变量,唯一合理的操作是值赋值,因此它们可以一致地使用。

同样,操作必须是原子的

最新更新