Java的记录class是如何实现同步的?

How does Java's record class implement synchronization?

因为 Record class 实例没有 obj header 而普通 Object 实例有。但我们仍然可以使用同步功能,例如:

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的record类是普通的类,有一个对象标识和它们附带的所有东西(比如监视器。)

就是说,如果您发现自己在 record 上同步,您可能做错了什么;记录的状态是不可变的(所有字段都是最终的),所以不清楚为什么要锁定记录。