私が使用している Java ドキュメントでは、Object.wait()
メソッドが通知されたか偽のウェイクアップであるかに関係なく、メソッドが戻る前に関連するモニターを必要とすることが明確になっています。通常のメソッド リターンの前に、モニターの再取得が行われます。
Object.wait()
ただし、イベントが例外をスローした場合に何が起こるかについては、少し明確ではありませんInterrupted Exception
。例外をスローする前に、実際にロックを再取得すると推測しています。ただし、ドキュメントはそれについてあまり明示的ではないため、100%確実ではありません...
ここに私が見ているドキュメントがあります: http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#wait%28%29
それで、私の推論は正しいですか、それとも例外がスローされた後、呼び出し元のコードでモニターの状態に対処する必要がありますか (必要に応じて再取得するなど)?