タグ付けされた質問 「busy-waiting」

1
ループは、printステートメントのない他のスレッドによって変更された値を認識しません
私のコードには、別のスレッドから状態が変更されるのを待つループがあります。他のスレッドは機能しますが、私のループは変更された値を認識しません。永遠に待ちます。しかし、System.out.printlnステートメントをループに入れると、突然動作します!どうして? 以下は私のコードの例です: class MyHouse { boolean pizzaArrived = false; void eatPizza() { while (pizzaArrived == false) { //System.out.println("waiting"); } System.out.println("That was delicious!"); } void deliverPizza() { pizzaArrived = true; } } whileループの実行中にdeliverPizza()、別のスレッドから呼び出してpizzaArrived変数を設定します。しかし、ループは、System.out.println("waiting");ステートメントのコメントを外したときにのみ機能します。どうしたの?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.