-4

由于 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实例从轻量锁到重锁转换的过程?

4

1 回答 1

8

Java 的record类是普通的类,具有对象标识以及它们附带的所有东西(如监视器。)

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

于 2021-04-16T15:30:19.633 回答