プログラミング言語Java第4版310ページには以下のようにある。
waitの間は、オブジェクトのロックは解放されて、waitが完了した理由や方法がなんであろうと、waitが完了する前に自動的に獲得されます。
つまり、waitはsynchronizedされた箇所で実行されるが、待機状態になっている間は、そのオブジェクトのロックを解放し、なんらかの方法で待機状態から復帰した際に、wait実行箇所から再開した場合は、オブジェクトのロックを自動的に再取得しているといっている。
ま、そうじゃなきゃsychronizedで囲っている意味ないしね。
コメントを残す