相关疑难解决方法(0)

没有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;
    }
}
Run Code Online (Sandbox Code Playgroud)

while循环正在运行时,我deliverPizza()从另一个线程调用来设置pizzaArrived变量.但循环仅在我取消注释System.out.println("waiting");语句时才有效.这是怎么回事?

java multithreading synchronization busy-waiting

85
推荐指数
1
解决办法
6588
查看次数