在Java中每秒执行X次方法

问题描述 投票:-5回答:1

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

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

java methods frame-rate
1个回答
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将是“无限”。

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

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

  • 是一次1000次好吗?这符合要求吗?
  • 在第一个毫秒内运行该方法30次,然后等待剩余的999ms这个问题的有用解决方案?
© www.soinside.com 2019 - 2024. All rights reserved.