JMM 顺序一致性

and*_*hov 2 java multithreading

我试图从 Java 内存模型的角度来理解“顺序一致性”。JLS 的定义,第 17 章对我来说不是很清楚。

我会给出我的看法,如果我错了,请纠正我。具有一个线程顺序一致性的程序意味着如果在程序顺序中action1在action2之前,那么action2应该看到action1的结果。

有两个线程。

线程 1:

action1
action2
Run Code Online (Sandbox Code Playgroud)

线程2:

action3
action4
Run Code Online (Sandbox Code Playgroud)

如果action3看到 的结果action2,那么它也应该看到 的结果action1

Mar*_*nik 6

你是对的; 顺序一致性意味着每个动作都以原子方式执行,并且对所有线程立即可见。就好像你把所有的线程交织成一个线程,一个一个地执行动作。

请注意顺序一致性并不是 Java 内存模型实际工作的方式

引自17.4.3,程序和程序顺序

如果我们使用顺序一致性作为我们的内存模型,我们讨论过的许多编译器和处理器优化都是非法的。