游戏编程,为什么要实现Runnable?

时间:2013-04-27 18:44:35

标签: java

大多数游戏都采用以下结构编程:

[GAME LOOP]
Update method(ticks based on the delta time)
Render method(ticks as fast as possible)

为什么不能实现Runnable并实际创建一个无限循环:

while(true){
    update();
    render();
}

你可以把所有这些总结为“为什么要使用线程?”

我从未尝试过,但我希望得到一个明智的答案。

4 个答案:

答案 0 :(得分:8)

当某些后台工作正在进行时,游戏(UI呈现)不应该挂起。

如果你说

while(true){
    update(); //say it takes 1 min
    render();
}

您的游戏不会响应1分钟update()方法执行。

如果你愿意写下面的话

while(true){
    Thread t = new Thread(new Runnable(){
         public void run() {
            update(); //say it takes 1 min
         }
    });
    t.start();
    render();
}

update()异步(通过单独的thead),并行而不停止主游戏程序

答案 1 :(得分:2)

多核系统也可以并行运行多个线程。这可能会使整个程序运行得更快 - 这通常是带图形的游戏所希望的。

答案 2 :(得分:0)

创建线程,以便在执行其他操作时可以在后台运行。如果在非runnable类中有一个无限循环,程序将永远保持在该循环中。

答案 3 :(得分:0)

在此特定示例中,update方法需要定期运行,以便以适当的速度调整游戏世界。

render方法必须在单独的线程中运行,以防它导致update方法延迟或提前执行。