在Java中每秒执行X次方法

时间:2017-12-25 14:30:29

标签: java methods frame-rate

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

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

1 个答案:

答案 0 :(得分:1)

显示类似" 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这个问题的有用解决方案?