Java-“同步”和“最终”方法,声明顺序

Anj*_*aka 2 java final synchronized

我有一个关于方法同步最终排序的问题。以下两项均被编译器接受,但是它们之间是否有实际区别?

public synchronized final void update() {
    // Do stuff
}

public final synchronized void update() {
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

mic*_*alk 10

JLS 8.4.3开始

如果在方法声明中出现两个或多个(不同的)方法修饰符,则按惯例(尽管不是必需的),它们的出现顺序与上面在MethodModifier生产中显示的顺序一致。

并将生产MethodModifier订单指定为(请参阅我提供的JLS链接):

MethodModifiers:
    MethodModifier
    MethodModifiers MethodModifier

MethodModifier: one of
    Annotation public protected private abstract
    static final synchronized native strictfp
Run Code Online (Sandbox Code Playgroud)

因此,JLS指定了synchronized并且final可以按任何顺序出现。

因此,您的问题的答案是:没有区别