¿Cuál es la razón por la cual "sincronizado" no está permitido en los métodos de interfaz Java 8?

En Java 8, puedo escribir fácilmente:

interface Interface1 {
    default void method1() {
        synchronized (this) {
            // Something
        }
    }

    static void method2() {
        synchronized (Interface1.class) {
            // Something
        }
    }
}

Obtendré la semántica de sincronización completa que puedo usar también en las clases. Sin embargo, no puedo usar elsynchronized modificador en las declaraciones de método:

interface Interface2 {
    default synchronized void method1() {
        //  ^^^^^^^^^^^^ Modifier 'synchronized' not allowed here
    }

    static synchronized void method2() {
        // ^^^^^^^^^^^^ Modifier 'synchronized' not allowed here
    }
}

Ahora, uno puede argumentar que las dos interfaces se comportan de la misma manera, excepto queInterface2 establece uncontrato enmethod1() y enmethod2(), que es un poco más fuerte de lo queInterface1 hace. Por supuesto, también podríamos argumentar quedefault Las implementaciones no deben hacer suposiciones sobre el estado de implementación concreto, o que tal palabra clave simplemente no ejercería su peso.

Pregunta:

¿Cuál es la razón por la cual el grupo de expertos JSR-335 decidió no apoyarsynchronized en los métodos de interfaz?

Respuestas a la pregunta(1)

Su respuesta a la pregunta