내가 사용하고있는 자바 문서는 알리거나 알려지지 않은 웨이크 업인지 여부에 상관없이 Object.wait()
메서드가 반환되기 전에 관련 모니터를 요구한다는 것을 분명히합니다. 모든 정상적인 메소드 리턴은 모니터 재 획득에 의해 선행됩니다.Object.wait() 메서드는 예외를 throw 할 때 모니터를 다시 가져 옵니까?
그러나 Object.wait()
이 예외를 throw하는 경우 어떤 일이 발생하는지에 대해서는 분명하지 않습니다 (예 : Interrupted Exception
). 나는 그것이 실제로 예외를 던지기 전에 자물쇠를 다시 획득한다고 추측한다. 그러나, 문서 그것에 대해 매우 명시 적없는, 그래서 여기
, 내 추론이 올바른지, 또는 내 호출 코드가 예외가 발생 된 후 모니터 상태를 처리해야합니다 (예 : 필요한 경우 다시 가져 오기)?
경험적으로,이 올바른 것으로 보인다. 그것은 또한 합리적입니다. 설명서 버그를 암시하는 설명서에서 추론 할 수 있는지 확신 할 수 없습니다. –
@PatriciaShanahan 답변을 완전히 다시 작성했습니다. 사실 JLS는 잠금 장치가 무조건 다시 확보 될 것이라는 점을 분명히 명시하고 있습니다. –
@ PatriciaShanahan 감사합니다. 매우 명확하게 설명되어 있습니다. JLS 링크도 가져 주셔서 감사합니다. 다음 번에 API 문서에서 언급하지 않은 비슷한 질문을 사용할 것입니다. :) –