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

Ore*_*ton 1 java

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

[GAME LOOP]
Update method(ticks based on the delta time)
Render method(ticks as fast as possible)
Run Code Online (Sandbox Code Playgroud)

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

while(true){
    update();
    render();
}
Run Code Online (Sandbox Code Playgroud)

你可以真正总结所有这些"为什么使用线程?"

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

san*_*hat 8

当一些后台工作正在进行时,游戏(UI渲染)不应该挂起.

如果你说

while(true){
    update(); //say it takes 1 min
    render();
}
Run Code Online (Sandbox Code Playgroud)

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

如果你愿意写下面的话

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

update()将运行异步 (由单独的THEAD的手段),平行,不停止你的主要游戏程序