O loop não vê o valor alterado por outro segmento sem uma instrução de impressão

No meu código, tenho um loop que espera que algum estado seja alterado de um thread diferente. O outro thread funciona, mas meu loop nunca vê o valor alterado.Espera para sempre. No entanto, quando eu coloco umSystem.out.println declaração no loop, de repente funciona! Por quê?

A seguir, um exemplo do meu código:

class MyHouse {
    boolean pizzaArrived = false;

    void eatPizza() {
        while (pizzaArrived == false) {
            //System.out.println("waiting");
        }

        System.out.println("That was delicious!");
    }

    void deliverPizza() {
        pizzaArrived = true;
    }
}

Enquanto o loop while estiver em execução, eu chamodeliverPizza() de um segmento diferente para definir opizzaArrived variável. Mas o loop só funciona quando eu descomente oSystem.out.println("waiting"); declaração. O que está acontecendo?

questionAnswers(1)

yourAnswerToTheQuestion