Java 循环运行5分钟
我有一个要求运行一段时间循环5分钟。 我查找了计时器api,但找不到这样做的方法。 任何人都可以为此提供一个代码snipet。Java 循环运行5分钟,java,Java,我有一个要求运行一段时间循环5分钟。 我查找了计时器api,但找不到这样做的方法。 任何人都可以为此提供一个代码snipet。 谢谢最简单的方法就是检查每次迭代经过了多少时间。例如: final long NANOSEC_PER_SEC = 1000l*1000*1000; long startTime = System.nanoTime(); while ((System.nanoTime()-startTime)< 5*60*NANOSEC_PER_SEC){ // do st
谢谢最简单的方法就是检查每次迭代经过了多少时间。例如:
final long NANOSEC_PER_SEC = 1000l*1000*1000;
long startTime = System.nanoTime();
while ((System.nanoTime()-startTime)< 5*60*NANOSEC_PER_SEC){
// do stuff
}
最终长纳米秒每秒=1000l*1000*1000;
long startTime=System.nanoTime();
而((System.nanoTime()-startTime)<5*60*NANOSEC_/秒){
//做事
}
这将运行循环,直到超过5分钟
注:
System.nanoTime()
比System.currentTimeMillis()
更合适,因为如果调整计算机的系统时钟,后者将发生变化,从而中断计算。感谢Shloim指出这一点因为你说的是计时器API,我想你想要的是一个延迟,而不是“循环运行5分钟”。如果是这样的话,你可以使用这样的东西,让CPU做更多有用的事情,而不是忙着等待。或者至少节省一些能源和地球。这个循环将运行5分钟。更改计算机的日期/时间(用户或NTP)将不会影响该操作
long endTime=System.nanoTime()+TimeUnit.NANOSECONDS.convert(5L,TimeUnit.MINUTES);
while(System.nanoTime()
应该避免使用其他方法,如System.currentTimeMillis(),因为它们依赖于计算机日期/时间。谢谢,我正在寻找。是的,对于简单的延迟,这是正确的答案。问题有点不清楚……如果用户在循环运行时调整时钟,那么循环在1分钟内不会运行。它可能运行数月或数年。这是因为
System.currentTimeMillis()
返回自1970/01/01-00:00以来的毫秒数。您需要一个单调的时间计数器,如System.nanoTicks()
long endTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(5L, TimeUnit.MINUTES);
while ( System.nanoTime() < endTime ){
// do whatever
}