尝试在基于值的类的实例上进行同步,从 Java16 开始,这些实例会生成编译时警告并引发运行时异常。

例如,java.lang.Double 用 jdk.internal.ValueBased 注解,因此以下代码会产生编译时警告:

Double d = 20.0;
synchronized (d) { ... } // javac 警告

自从 2021.1