아래에서 예외가 syncMethod2()에서 발생하면 어떻게 잠금 객체를 잠금 해제 할 수 있습니까?잠금을 해제하기 전에 예외가 발생할 때 ReentrantLock 객체의 잠금을 해제하는 방법
lock.lock();
try {
syncMethod2(); // throw new NullPointerException();
} finally {
lock.unlock();
}
그 패턴도 the ReentrantLock
JavaDoc에 설명되어 있습니다 : finally
-
public class ReEntrantLock {
ReentrantLock lock = new ReentrantLock();
void syncMethod1() {
lock.lock();
syncMethod2(); // throw new NullPointerException();
lock.unlock();
}
}
덧붙여서 : 다루는 클래스와 비슷한 이름 (또는 더 나쁜 것은 동일한 이름)이 혼란스러워서 예기치 않은 결과를 가져올 수 있으므로 테스트 클래스에 대해 다른 이름을 선택하는 것이 좋습니다. 이름에 "Test"를 추가하면 일반적으로 더 안전합니다. –