在 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一个有用的解决问题的方法吗?
我的任务是每秒执行给定方法 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一个有用的解决问题的方法吗?