我不确定问题的原因,这有点奇怪。

这是代码(java):

while (true) {

        if (!pause) {

            // move enemies
            moveEnemies();

            // shoot towers
            shootTowers();

            // Move all bullets
            bulletFlight();

            // add a delay
            sleep();

        }



    }


暂停变量是在从外部类更改时不会更新的变量,但是如果我在while循环之外放置某种进程(例如,将休眠移至if语句之外),它确实会更改。

我确切地知道如何解决我的问题(如上所述),但是我不知道为什么修复会起作用。如果我尝试调试代码(将断点放在if语句中),该问题也已解决。

有人可以启发我解决我的问题的原因吗?

如果需要,我不介意发布更多代码(或整个项目)。

谢谢

最佳答案

似乎您的线程可能无法缓存pause的值。为了防止这种情况,请使用pause volatile

09-11 04:46
查看更多