Цикл не видит значение, измененное другим потоком без оператора печати
В моем коде у меня есть цикл, который ожидает изменения какого-то состояния из другого потока. Другой поток работает, но мой цикл никогда не видит измененное значение.Это ждет вечно. Тем не менее, когда я ставлю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");
заявление. В чем дело?