Java 每个线程循环多次重复一个方法

Java 每个线程循环多次重复一个方法,java,swing,timer,Java,Swing,Timer,为了提供一些背景信息,我目前正在开发一个Java编码的弹球游戏。我将它保存在MVC设计模型中。它有一个相当真实的物理系统,允许它处理碰撞、重力、摩擦等。该系统现在运行在20 FPS的系统上 我遇到的问题是,检查系统中碰撞的物理循环通过运行一种方法来工作,该方法使用球的当前速度计算直到下一次碰撞的时间。显然,最有效的方法是持续运行检查,以说明球在检查之间的移动,以尽可能准确地获得它,如果直到碰撞的时间小于直到下一次检查的时间,则执行碰撞 然而,目前我使用的系统每秒只能运行循环20次,这并不能提供我

为了提供一些背景信息,我目前正在开发一个Java编码的弹球游戏。我将它保存在MVC设计模型中。它有一个相当真实的物理系统,允许它处理碰撞、重力、摩擦等。该系统现在运行在20 FPS的系统上

我遇到的问题是,检查系统中碰撞的物理循环通过运行一种方法来工作,该方法使用球的当前速度计算直到下一次碰撞的时间。显然,最有效的方法是持续运行检查,以说明球在检查之间的移动,以尽可能准确地获得它,如果直到碰撞的时间小于直到下一次检查的时间,则执行碰撞

然而,目前我使用的系统每秒只能运行循环20次,这并不能提供我想要的准确结果,特别是在高加速时,例如在球发射时

我使用的计时器循环位于MVC的控制器部分,并调用位于模型中的物理部分。我可以在控制器中调用该方法时传递剩余时间,物理系统可以使用该时间,但是我不知道如何在下次屏幕刷新之前跟踪剩余时间的同时多次运行循环

理想情况下,我希望每次屏幕刷新至少运行10次。如果有人需要更多的信息,请询问


谢谢您的帮助。

所以实际的问题是您不知道何时会发生碰撞,何时会更新下一帧

这些不应该是独立的运行任务吗?一个线程负责管理冲突检测,另一个线程负责更新?每个线程都可以在自己的时间间隔(Timer.addTask(…)上运行,并且它们应该适当地同步,以便在执行渲染线程时不执行会话/位置更新

希望这能回答你的问题

你好,罗伯