Цикл не видит значение, измененное другим потоком без оператора печати

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

Ответы на вопрос(1)

Ваш ответ на вопрос