java - 'synchronized barriers' 是什么?

标签 java jvm synchronized memory-barriers java-memory-model

最近在看页面The JSR-133 Cookbook for Compiler Writers由 Doug Lea 关于 JSR 133: JavaTM Memory Model and Thread Specification Revision .
我在那里读到这一行:

Memory barriers are not themselves "synchronization barriers"


我搜索了一些关于 之间差异的资源。内存屏障同步障碍 但找不到任何好东西。我也不知道是不是 同步障碍 与其他语言相比,Java 有什么不同。

最佳答案

首先,正如@markspace 指出的那样,您正在查看的文档并不打算作为 Java 程序员尝试了解如何正确编写线程代码的文档。

"This is an unofficial guide to implementing the new Java Memory Model (JMM)"


因此,如果您为此目的阅读它,您可能会不必要地混淆自己。相反,您应该使用 Java 的更高级别的并发机制(最好!),或者阅读和理解 JMM 规范。

同步屏障(不是“同步屏障”)(我相信)是指 Java 内存模型的术语。
JLS 17.4.4定义各种 Action 之间的同步关系。这种关系意味着两个线程之间的同步:

The source of a synchronizes-with edge is called a release, and the destination is called an acquire.


我不确定这一点(因为 Cookbook 文档没有详细说明),但我认为 Cookbook 中的“同步障碍”是指同步边缘的物理实现......无论是什么。
所以文档在这里说的是它所指的内存屏障与实现锁等的机制不是一回事。这真的很明显。

关于java - 'synchronized barriers' 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62856520/

相关文章:

java.lang.StringIndexOutOfBoundsException : String index out of range: -4

java - 无法从 Tomcat 中运行的 Guava r08 加载类。无法从源代码编译。缺少 javax.annotations

java - 对给定范围 [a,b] 中的奇数求和?

java - 创建带有圆角的表格

java - 为 TeamCity 配置 Java 版本

java - java小GC的原因是什么

java - 为 Java 进程提供某种签名/标识符

java - 为什么Java构造函数不能同步?

java - volatile 数组的替代品

java - Spring的@Async忽略synchronized?