java中的类级锁定

时间:2016-12-21 07:07:19

标签: java multithreading synchronization locking

假设我有一个我想要获得类级别锁的类。我是否一定需要在类中使用静态方法来实现类级锁定,或者只需使用synchronized(MyClass.class)就可以完成这项工作而不需要任何静态方法。

2 个答案:

答案 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();
}