没有print语句,循环看不到其他线程更改的值
在我的代码中,我有一个循环,等待从不同的线程更改某个状态。另一个线程工作,但我的循环永远不会看到更改的值。它永远等待。但是,当我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");语句时才有效。这是怎么回事?
猛跑小猪