No runtime warnings for synchronization on value-based classes

Zheka Kozlov orionllmain at gmail.com
Wed Feb 24 05:30:08 UTC 2021


Hi!

// Main.java
public class Main {
    public static void main(String[] args) {
        f(0D);
    }

    private static void f(Double value) {
        synchronized (value) {
            System.out.println(value);
        }
    }
}

> java --version
openjdk 16 2021-03-16
OpenJDK Runtime Environment (build 16+36-2231)
OpenJDK 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)

> javac Main.java
Main.java:7: warning: [synchronization] attempt to synchronize on an
instance of a value-based class
        synchronized (value) {
        ^
1 warning

> java Main
0.0

According to JEP 390 [1], there should be a runtime warning. But there is
none. Or did I miss something?

[1] https://openjdk.java.net/jeps/390


More information about the jdk-dev mailing list