我想澄清一下,在关系与volatile变量一起工作之前会发生什么.我们有以下变量:
public static int i, iDst, vDst;
public static volatile int v;
Run Code Online (Sandbox Code Playgroud)
和线程A:
i = 1;
v = 2;
Run Code Online (Sandbox Code Playgroud)
和线程B:
vDst = v;
iDst = i;
Run Code Online (Sandbox Code Playgroud)
以下语句是否符合Java内存模型(JMM)?如果没有,那么正确的解释是什么?
i = 1
总是发生在以前 v = 2
v = 2
发生 vDst = v
在JMM 之前,只有它实际发生在时间之前i = 1
发生 iDst = i
在JMM 之前(并且iDst
可以预测分配1
)如果v = 2
实际发生vDst = v
在时间之前i = 1
和之间的顺序iDst …
java volatile java-memory-model thread-synchronization happens-before