大多数游戏都采用以下结构编程:
[GAME LOOP]
Update method(ticks based on the delta time)
Render method(ticks as fast as possible)
为什么不能实现Runnable
并实际创建一个无限循环:
while(true){
update();
render();
}
你可以把所有这些总结为“为什么要使用线程?”
我从未尝试过,但我希望得到一个明智的答案。
答案 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
方法延迟或提前执行。