在 Java 中每秒执行方法 X 次

Executing a method X number of times per second in Java

我的任务是每秒执行给定方法 X 次(例如每秒 30 次)。在那个 tick 方法中,我应该显示当前速度(基本上显示 FPS)。

我什至不知道如何开始。尝试谷歌搜索但没有真正帮助。

要显示类似 "fps" 的内容:

public static void main(String[] args) {
    while (true) callMethod();
}

private static long lastTime = System.currentTimeMillis();
public static void callMethod() {
    long now = System.currentTimeMillis();
    long last = lastTime;
    lastTime = now;

    double fps = 1000 / (double)(now - last);
    System.out.println(fps);
}

您可能需要添加一些睡眠,否则两个步骤之间的差异太小,fps 将为 "Infinity"。

每秒30次的要求完全不同。正如我在评论中所说,这基本上与 fps 完全相反,因为每秒 30 次正好意味着 30 fps,这意味着不需要计算 fps,因为这是最初的要求。

进一步注意,“每秒 30 次”本身通常是一个不好的要求,原因至少有两个:

  • 一秒1000次可以吗?是否满足要求
  • 是运行该方法在第一个毫秒执行30次然后等待剩下的999ms一个有用的解决问题的方法吗?