运行循环5分钟

时间:2010-09-22 10:16:19

标签: java

我要求在5分钟内运行一个while循环。 我找了计时器api,但我找不到这样做。 任何人都可以为此提供代码段。
感谢

3 个答案:

答案 0 :(得分:11)

最简单的方法是检查每次迭代的时间。例如:

final long NANOSEC_PER_SEC = 1000l*1000*1000;

long startTime = System.nanoTime();
while ((System.nanoTime()-startTime)< 5*60*NANOSEC_PER_SEC){
  // do stuff
}

这将运行循环,直到超过5分钟。

注意:

  1. 当前循环迭代将始终完成,因此在实践中它将始终运行超过5分钟。
  2. 对于此应用程序System.nanoTime()System.currentTimeMillis()更合适,因为如果计算机的系统时钟被调整,后者将会改变,从而放弃计算。 感谢Shloim指出这一点。

答案 1 :(得分:3)

此循环将运行5分钟。它不会受到计算机日期/时间(用户或NTP)所做的更改的影响。

long endTime = System.nanoTicks() + TimeUnit.NANOSECONDS.convert(5L, TimeUnit.MINUTES);
while ( System.nanoTicks() < endTime ){
  // do whatever
}

应避免使用System.currentTimeMillis()等其他方法,因为它们依赖于计算机的日期/时间。

答案 2 :(得分:1)

因为你在谈论计时器API,我猜你所追求的是延迟而不是“循环运行5分钟”。如果是这种情况,你可以使用类似Thread.sleep(..)的东西,这样可以让CPU做更多有用的东西,等待繁忙。或至少节省一些能量和地球。