静态如何影响同步方法?

时间:2018-05-30 17:14:11

标签: java

如果一个类有这两种方法:

public static synchronized void m1(){}

public synchronized void m2(){}

两个线程可以同时执行这两个方法吗?

1 个答案:

答案 0 :(得分:1)

是的,两个线程可以同时执行这两个方法。静态方法在类上同步,另一个方法在对象本身上同步。

换句话说,静态方法相当于此代码块:

synchronized(MyClass.class) {
...
}

其中MyClass是定义静态方法的类。请注意,它与非静态方法中的this.getClass()不同,因为getClass()会返回派生最多的类。