我正在研究一款基于键盘输入来移动汽车图像的游戏。目前,我正在使用以下游戏循环:
private void runGameLoop() {
window.setVisible();
isRunning = true;
final double FRAMES_PER_SECOND = 60;
double timePerupdate = 1000000000 / FRAMES_PER_SECOND;
double timeFromLastUpdate = 0;
long now;
long last = System.nanoTime();
while (isRunning) {
now = System.nanoTime();
timeFromLastUpdate += (now - last) / timePerupdate;
last = now;
if(timeFromLastUpdate >= 1) {
tick();
render();
timeFromLastUpdate--;
}
}
}
tick方法更新汽车图像的位置,然后render方法将在屏幕上渲染图像(具有新位置)。 我想将新图像位置的计算放在单独的线程上,因为此刻计算需要花费很长时间并且会导致渲染滞后。有没有办法在仍然实现游戏循环的同时使用多线程? 预先感谢。