Tag: 忙等待

没有打印语句,Loop看不到更改的值

在我的代码中,我有一个等待某个状态从一个不同的线程更改的循环。 另一个线程工作,但我的循环从来没有看到改变的价值。 它永远等待。 但是,当我在循环中放置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()来设置pizzaArrivedvariables。 但循环只适用于我取消注释System.out.println("waiting"); 声明。 这是怎么回事?