没有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");
语句时才有效。这是怎么回事?
猛跑小猪