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?