2011-12-31 63 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