In der Schleife wird kein Wert angezeigt, der von einem anderen Thread ohne eine print-Anweisung geändert wurde
In meinem Code habe ich eine Schleife, die darauf wartet, dass ein Zustand von einem anderen Thread geändert wird. Der andere Thread funktioniert, aber meine Schleife sieht nie den geänderten Wert.Es wartet für immer. Wenn ich jedoch eineSystem.out.println
Aussage in der Schleife, es funktioniert plötzlich! Warum?
Folgendes ist ein Beispiel für meinen Code:
class MyHouse {
boolean pizzaArrived = false;
void eatPizza() {
while (pizzaArrived == false) {
//System.out.println("waiting");
}
System.out.println("That was delicious!");
}
void deliverPizza() {
pizzaArrived = true;
}
}
Während die while-Schleife läuft, rufe ich andeliverPizza()
von einem anderen thread zum einstellen despizzaArrived
Variable. Aber die Schleife funktioniert nur, wenn ich das auskommentiereSystem.out.println("waiting");
Aussage. Was ist los?