2 つのコード ブロックがあり、一方は他方が通知するのを待ちます。
synchronized(this) {
wait();
}
と
while(condition) {
//do stuff
synchronized(this) {
notify();
}
}
奇妙なことに、これが通知を待たなかったのは次のとおりです。
synchronized(objectLock) {
objectLock.wait();
}
と
while(condition) {
//do stuff
synchronized(objectLock) {
objectLock.notify();
}
}
両方のセットの違いと、最初のセットが機能し、他のセットが機能しなかった理由について非常に興味があります。2 つのブロックが 2 つの異なるメソッドの 2 つの異なるスレッドに存在することに注意してください (それが役立つ場合)。
なぜそうなのか誰かが説明してくれることを願っています。より詳細になるように、質問を編集しました。