Java 如何在调用unlock之前发生异常时解锁ReentrantLock对象

Java 如何在调用unlock之前发生异常时解锁ReentrantLock对象,java,Java,在下面的示例中,如果syncMethod2()发生异常,那么如何解锁锁定对象 public class ReEntrantLock { ReentrantLock lock = new ReentrantLock(); void syncMethod1() { lock.lock(); syncMethod2(); // throw new NullPointerException(); lock.unlock(); } } 就在那里的 它就在…您使用的try-finally:

在下面的示例中,如果syncMethod2()发生异常,那么如何解锁锁定对象

public class ReEntrantLock {
ReentrantLock lock = new ReentrantLock();

void syncMethod1() {
  lock.lock();
  syncMethod2(); // throw new NullPointerException();
  lock.unlock();
}

}
就在那里的


它就在…

您使用的
try
-
finally

lock.lock();
try {
    syncMethod2(); // throw new NullPointerException();
} finally {
    lock.unlock();
}

该模式也在中描述。

您使用的
try
-
finally

lock.lock();
try {
    syncMethod2(); // throw new NullPointerException();
} finally {
    lock.unlock();
}

该模式在中也有描述。

顺便说一句:我建议您为测试类选择不同的名称,因为与您正在处理的类相似的名称(或者更糟的是:相同的名称)可能会变得混乱,并产生意外的结果。在名称后面附加“Test”通常足以使其更安全。顺便说一句:我建议您为测试类选择不同的名称,因为您正在处理的类的类似名称(或者更糟糕的是:相同的名称)可能会变得混乱,并产生意外的结果。在名称后面加上“Test”通常足以使其更安全。