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