为什么我的变量只在延迟放入while(true)循环时才更新

时间:2014-03-20 14:40:18

标签: java while-loop boolean

这是一个奇怪的情况,我不确定问题的原因。

这是代码(java):

while (true) {

        if (!pause) {

            // move enemies
            moveEnemies();

            // shoot towers
            shootTowers();

            // Move all bullets
            bulletFlight();

            // add a delay
            sleep();

        }



    }

暂停变量是从外部类更改时不更新的变量,但是如果我在while循环之外放置某种进程(例如在if语句之外移动sleep),它会发生变化。

我确切知道如何解决我的问题(如上所述),但我不知道为什么修复有效。如果我尝试调试代码(在if语句中放置一个断点),问题也会解决。

有人可以告诉我我的问题的原因吗?

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

由于

1 个答案:

答案 0 :(得分:3)

您的线程似乎可能会遇到pause缓存值的问题。为了防止它pause volatile