我不确定问题的原因,这有点奇怪。
这是代码(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
。