在JLS, §17.4.5. Happens-before Order , 它说
A program is correctly synchronized if and only if all sequentially consistent executions are free of data races.
它只给出了“顺序一致”的定义,并没有给出“顺序一致执行”的定义。只有知道什么是“顺序一致的执行”,我们才能进一步讨论这个话题。
那么什么是“顺序一致的执行”,什么是“顺序一致的执行没有数据竞争”?
最佳答案
执行有一个非常简单的正式定义:它只是对正在考虑的所有内存操作集合的总排序。
顺序一致的执行由顺序一致的操作的任何总排序表示。
“无数据竞争”一词也由 JLS 精确定义。
请注意,JLS 不需要顺序一致性。事实上,happens-before 的整个形式主义的存在是为了精确定义顺序不一致的执行可以维持顺序一致性的幻觉的术语。
关于java - 什么是 "sequentially consistent executions are free of data races"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018369/