Qual é a razão pela qual “sincronizado” não é permitido nos métodos de interface Java 8?

No Java 8, eu posso escrever facilmente:

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

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

Receberei a semântica de sincronização completa que também posso usar nas aulas. No entanto, não posso usar osynchronized modificador nas declarações do método:

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

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

Agora, pode-se argumentar que as duas interfaces se comportam da mesma maneira, exceto queInterface2 estabelece umcontrato emmethod1() e emmethod2(), que é um pouco mais forte do queInterface1 faz. Claro, também podemos argumentar quedefault as implementações não devem fazer suposições sobre o estado concreto da implementação, ou que essa palavra-chave simplesmente não exerça seu peso.

Pergunta, questão:

Qual é a razão pela qual o grupo de especialistas JSR-335 decidiu não apoiarsynchronized em métodos de interface?

questionAnswers(1)

yourAnswerToTheQuestion