【发布时间】:2021-04-16 07:28:14
【问题描述】:
由于 Record 类实例没有普通 Object 实例具有的 obj 标头。但我们仍然可以使用同步功能,例如:
public record User(long id, String name, int age) {}
User user = new User(1, "name", 18);
synchronized (user) {
user.wait();
System.out.println("test");
}
会不会有类似普通Object实例从轻量锁到重锁转换的过程?
【问题讨论】:
-
记录的实例是与任何其他对象一样的对象,因此您可以像在任何其他对象上一样对其进行同步。
-
您从哪里读到的记录在其元数据中没有固定锁?
-
当你做一个粗体的陈述比如记录实例没有对象头时,你应该提供一个来源。
-
很多人似乎对记录(现在 Java 中的一个特性)和原始类(一个通过 Project Valhalla 进入未来 Java 的特性)感到困惑。它们有很多共同点,社区中有很多噪音将两者混为一谈,所以我怀疑她/他受到了影响。