1

Most games are programmed in this structure:

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

Why can you not implement Runnable and actually create an infinite loop:

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

You can really sum up all of this to "Why use threads?"

I never tried it, but i would like to get a wise answer.

4

3 回答 3

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()异步运行 (通过单独的线程),并行运行而不会停止您的主游戏程序

于 2013-04-27T18:50:38.060 回答
2

多核系统也可以并行运行严格的线程。这可能会使整个程序运行得更快——这在带有图形的游戏中通常是可取的。

于 2013-04-27T18:49:43.550 回答
0

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

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

于 2013-04-27T18:48:26.227 回答