最简单的方法是只检查每次迭代已花费了多少时间。例:
final long NANOSEC_PER_SEC = 1000l*1000*1000;long startTime = System.nanoTime();while ((System.nanoTime()-startTime)< 5*60*NANOSEC_PER_SEC){ // do stuff}这将运行循环,直到超过5分钟为止。
笔记:
- 当前循环迭代将始终完成,因此在实践中它将始终运行5分钟以上。
- 对于此应用程序而言,
System.nanoTime()
它比之更合适,System.currentTimeMillis()
因为如果调整了计算机的系统时钟,后者将发生变化,从而使计算工作中断。 感谢Shloim指出这一点。



