最佳答案
在我的代码中,我有一个循环,它等待从不同的线程改变某个状态。另一个线程可以工作,但是我的循环不会看到更改后的值。然而,当我在循环中放入一个 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");
语句的注释时,循环才能工作。发生什么事了?