2011-12-31 67 views
2

我正在寻找一种简单的方法来在java中执行指定时间的方法/函数。东西会是这样的:在指定的时间运行方法/函数

for(3 secs){ 
    x(); 
} 

该方法应该很容易实现,应该有一个良好的性能。

+5

如果x()需要4秒钟会发生什么? – adatapost 2011-12-31 03:15:53

+0

如果你正在寻找定期执行一个任务,你可以使用好的醇'定时器类。 – Adrian 2011-12-31 03:39:00

+1

是否要重复执行x()3秒,或者等待x返回,持续3秒,然后退出该块? – Sumit 2011-12-31 09:49:03

回答

4
long startTime = System.currentTimeMillis(); 
while(System.currentTimeMillis() - startTime <= 3000){ 
    x(); 
} 

+1亚伦的回答,用long finishTime = System.currentTimeMillis() + 3000代替,动环外的加/减,只留下效率/性能的比较。

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

+1

没关系,这个和我的一样,效率更高。我正在删除我的。 – 2011-12-31 03:18:42

+0

是的。当我看到答案已经在那里的时候,我也正准备发帖。 – eboix 2011-12-31 03:19:30

+0

如何执行方法x()? OP说**在指定的时间运行一个方法/函数**。我猜不是次数。 – adatapost 2011-12-31 03:23:39

3

我做

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

移动运算外循环,提高效率/性能

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) ; 
} 

如果任务不是获分配的时间需要更长的时间这会甚至工作。

+0

+1:如果你想在它之后做点什么,那么不太好。 ;) – 2011-12-31 08:37:19