在指定时间内运行方法/功能

时间:2011-12-31 03:07:24

标签: java function time

我正在寻找一种在java中执行指定时间的方法/函数的简单方法。有点像这样:

for(3 secs){
   x();
}

这种方式应该易于实施,并且应该具有良好的性能。

3 个答案:

答案 0 :(得分:4)

long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime <= 3000){
  x();
}
对于Aaron的答案,

+1,使用long finishTime = System.currentTimeMillis() + 3000代替,在循环外部移动加法/减法,只留下效率/性能的比较。

但是请注意,一旦输入x(),并且x()需要一段时间才能运行,整个循环可能会运行超过所需时间。如果x()是长度,您可能还想在其中添加对停止条件的检查。

答案 1 :(得分:3)

我会做

long finishTime = System.currentTimeMillis()+3000;
while(System.currentTimeMillis() <= finishTime){
  x();
}

将算法移出循环,以提高效率/性能

答案 2 :(得分:1)

void run ( Runnable task , long milliseconds ) throws Exception
{
       new Thread ( )
       {
              public void run ( ) 
              {
                     while ( true )
                     {
                              task . run ( ) ;
                     }
              }
       } . start ( ) ;
       Thread . sleep ( milliseconds ) ;
       System . exit ( 0 ) ;
}

即使任务花费的时间超过分配的时间,这也会有效。