2009-11-12 2 views

답변

3

"실패"는 캐치되지 않은 예외가 스레드의 run 메서드 맨 위에서 전파되어 실행을 중지시키는 것을 의미합니다.

스레드가 finally 블록을 올바르게 사용하면 writeLock이 스택을 백업 할 때 잠금 해제됩니다.

그러나 스레드가 unlock()을 호출하지 않은 경우 스레드가 더 이상 실행되지 않더라도 해당 모니터를 보유하므로 - 다른 스레드는 교착 상태가됩니다.

리소스를 올바르게 가져오고 릴리스하는 것이 중요한 이유입니다. synchronized 블록을 사용하는 이유는 특정 잠금 기능이 필요하다는 것을 입증 할 때까지/출시되지 않아야하기 때문입니다. (귀하의 경우 별도의 읽기/쓰기 잠금이 필요하다고 확신합니다. 여기에서 좀 더 일반적인 점을 말씀드립니다.)

0

"Explicit Lock"을 사용하여 릴리스 할 때 try-finally 블록을 사용해야합니다 당신이 획득 한 모든 자물쇠.

이것은 동기화를 사용하는 경우의 주요 차이점입니다.

관련 문제