假设我有一个我想要获得类级别锁的类。我是否一定需要在类中使用静态方法来实现类级锁定,或者只需使用synchronized(MyClass.class)
就可以完成这项工作而不需要任何静态方法。
答案 0 :(得分:3)
同步Class
对象就行了。
或者,如果您希望类级别锁定不会干扰同一个类上的不同类级别锁定,则将私有静态字段声明为锁定;例如
public class MyClass {
private static final Object myLock = new Object();
private static final Object anotherLock = new Object();
...
}
现在我们为同一个类提供了两个不同的“类级别”锁。
答案 1 :(得分:0)
您也可以使用ReentrantLock:
private static final Lock lock1 = new ReentrantLock();
public static void main(String... strings) {
lock1.lock();
//do Something
lock1.unlock();
}