Jov*_*voH 5 java jvm synchronized java-memory-model memory-barriers
最近我正在阅读Doug Lea 关于 JSR 133: JavaTM Memory Model and Thread Specification Revision的页面The JSR-133 Cookbook for Compiler Writers。
我在那里读到这一行:
内存屏障本身并不是“同步屏障”
我搜索了一些关于内存屏障和同步屏障之间差异的资源,但找不到任何好的东西。我也无法判断同步障碍与 Java 与其他语言相比是否有任何不同。
首先,正如@markspace 指出的那样,您正在查看的文档并不打算作为 Java 程序员尝试了解如何正确编写线程代码的文档。
“这是实现新 Java 内存模型 (JMM)的非官方指南”
因此,如果您为此目的阅读它,您可能会不必要地混淆自己。相反,您应该使用 Java 的更高级别的并发机制(最好!),或者阅读和理解 JMM 规范。
同步屏障(不是“同步屏障”)(我相信)是指 Java 内存模型的术语。
JLS 17.4.4定义了各种操作之间的同步关系。这种关系意味着两个线程之间的同步:
同步边的源称为发布,目标称为获取。
我不确定这一点(因为 Cookbook 文档没有详细说明),但我认为Cookbook 中的“同步障碍”是指同步边缘的物理实现......无论是什么。
所以文档在这里说的是它所指的内存屏障与实现锁等的机制不是一回事。这真的很明显。