我在編寫簡單的遊戲時遇到了奇怪的行爲。基本上,我創建了一個無限循環的線程,每隔幾秒就會在遊戲中觸發一個事件。隨着Sysout(runAnimation)到位,一切正常。然而,只要我刪除它甚至停止發生。Heisenbug:線程不運行沒有sysout
看來,System.out的calll是影響程序的行爲,沒有任何人有一個想法,爲什麼這可能發生
這裏是循環:
private void run(){
long lastTime = -1;
while(true){
int timePerStep = (int) Math.ceil(ANIM_TIME/frequency);
System.out.println(runAnimation);
if(runAnimation && System.currentTimeMillis() - lastTime > timePerStep){
lastTime = System.currentTimeMillis();
controller.step();
try {
Thread.sleep(timePerStep);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
它在開始我班的建設如下:
animThread = new Thread(new Runnable() {
@Override
public void run() {
GUIView.this.run();
}
});
animThread.start();