假设我有一个要获取类级别锁的类。我是否一定需要在类内部使用静态方法来实现类级别的锁定,或者只使用synchronized(MyClass.class)就可以完成其中的任何静态方法。

最佳答案

Class对象上进行同步将达到目的。

另外,如果您希望您的类级别锁不干扰同一类上的其他类级别锁,则可以声明一个私有静态字段作为该锁;例如

public class MyClass {
    private static final Object myLock = new Object();
    private static final Object anotherLock = new Object();
    ...
}


现在,对于同一个类,我们有两个不同的“类级”锁。

07-27 21:11