不,这并不意味着. “类级别锁”只是一个不同对象的常规锁,即SomeClass.class. “对象级锁”锁定在此上.
编辑:为了确保我遵循对术语的理解,你想知道m1和m2是否可以同时运行,如下所述:
public class SomeClass {
public synchronized static void m1() {
//do something
}
public synchronized void m2() {
//do something
}
}
答案是肯定的,m1和m2可以同时运行.它在功能上等同于:
public class SomeClass {
public static void m1() {
synchronized (SomeClass.class) {
//do something
}
}
public void m2() {
synchronized (this) {
//do something
}
}
}
由于它们在完全不同的对象上进行同步,因此它们不是相互排斥的.