単純なゲームをコーディングしているときに、奇妙な動作を経験しました。基本的に、ゲーム内で数秒ごとにイベントを発生させる無限ループのスレッドを作成します。Sysout(runAnimation)を配置すると、すべてが正常に機能します。ただし、削除するとすぐに発生しなくなります。
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();