Java 为什么不在游戏循环中使用ScheduleXecutor

Java 为什么不在游戏循环中使用ScheduleXecutor,java,android,game-engine,Java,Android,Game Engine,我目前正在阅读有关游戏开发的书籍,每次我看到一个游戏循环的实现方式都是一样的 一个whiletrue街区,里面有一个供FPS使用的睡眠区 我在问自己,为什么我不应该使用Scheduledexecutor,这似乎是一个显而易见的选择? 我的意思是,我肯定我错了,我不太可能是第一个想到这一点的人,但为什么不呢?首先,看看传统游戏循环的一些演变。您的whiletrue+睡眠示例是最简单的一个 然后,人们注意到,游戏会受到电脑运行速度的影响。在谷歌上查找可变时间步长游戏循环,了解如何处理这一问题 现在请

我目前正在阅读有关游戏开发的书籍,每次我看到一个游戏循环的实现方式都是一样的

一个whiletrue街区,里面有一个供FPS使用的睡眠区

我在问自己,为什么我不应该使用Scheduledexecutor,这似乎是一个显而易见的选择?
我的意思是,我肯定我错了,我不太可能是第一个想到这一点的人,但为什么不呢?

首先,看看传统游戏循环的一些演变。您的whiletrue+睡眠示例是最简单的一个

然后,人们注意到,游戏会受到电脑运行速度的影响。在谷歌上查找可变时间步长游戏循环,了解如何处理这一问题

现在请仔细阅读ScheduledExecutorService上的文档。无论是scheduleAtFixedRate还是scheduleWithFixedDelay都不是你想要的游戏

此外,在文档中向下滚动,您会注意到,如果您不处理所有可能的异常,这可能会导致游戏循环突然终止


没有什么可以阻止您扩展ScheduledExecutorService并对其进行修改以满足您的需要,但我不建议您这样做。

主要原因可能是您正在阅读的大多数代码都是在并发包出现/大量使用之前编写的,或者是按照并发包出现/大量使用之前编写的模式编写的

第二种可能是信任。当你编写一些对你的应用程序至关重要的东西时,你需要确切地知道它是如何工作的。whiletrue循环非常清楚地表明了到底发生了什么。。。你必须花一些时间与不同的遗嘱执行人打交道,然后才能真正适应他们

应该有一个解决方案来解决您的问题,我相信您可以找到一些定期启动的解决方案,并在一次迭代花费的时间比预期的稍长的情况下进行调整


你甚至可能想建立自己的遗嘱执行人。模式本身很好,只是想办法让它为你工作。

处理每一个可能的异常也是while循环所必需的,对执行者来说没有什么不同。祝贺你重新编写了我的帖子。