gpt4 book ai didi

java - 为什么这个 while 循环不能每秒打印 1,000 次?

转载 作者:行者123 更新时间:2023-11-29 10:11:49 25 4
gpt4 key购买 nike

以下 Java 方法旨在以 nLoopsPerSecond 次每秒打印 i 次,持续 seconds 秒:

public void test(int nLoopsPerSecond, int seconds) {
double secondsPerLoop = 1.0/(double)nLoopsPerSecond;
long startTime = System.currentTimeMillis();
long currentTime;
int i = 0;
while ((currentTime = System.currentTimeMillis()) < startTime + seconds*1000) {
System.out.println(i++);
while (System.currentTimeMillis() < currentTime + secondsPerLoop*1000);
}
}

通过以下调用:

test(1000,1);

我希望此方法执行 System.out.println(i++); 1,000 次,但我只得到 63 次。

当我尝试使用此代码查看每个循环实际使用了多少秒时

public void test(int nLoopsPerSecond, int seconds) {
double secondsPerLoop = 1.0/(double)nLoopsPerSecond;
long startTime = System.currentTimeMillis();
long currentTime;
int i = 0;
while ((currentTime = System.currentTimeMillis()) < startTime + seconds*1000) {
while (System.currentTimeMillis() < currentTime + secondsPerLoop*1000);
System.out.println(System.currentTimeMillis() - currentTime);
}
}

我希望它每次循环打印 1 毫秒,但它打印 1516 毫秒。

请指出我的代码中有什么问题。

最佳答案

您是否在 Windows 上运行? System.currentTimeMillis() 引用底层操作系统时钟,在许多版本的 Windows 上只有 60Hz。

关于java - 为什么这个 while 循环不能每秒打印 1,000 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30966708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com