El bucle no ve el valor cambiado por otro hilo sin una declaración de impresión

En mi código, tengo un bucle que espera que algún estado cambie de un hilo diferente. El otro hilo funciona, pero mi bucle nunca ve el valor cambiado.Espera por siempre. Sin embargo, cuando pongo unSystem.out.println declaración en el bucle, de repente funciona! ¿Por qué?

El siguiente es un ejemplo de mi 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;
    }
}

Mientras se ejecuta el ciclo while, llamodeliverPizza() de un hilo diferente para establecer elpizzaArrived variable. Pero el bucle solo funciona cuando descomento elSystem.out.println("waiting"); declaración. ¿Que esta pasando?

Respuestas a la pregunta(1)

Su respuesta a la pregunta