簡體   English   中英

每隔幾秒鍾從循環內執行Java執行方法

[英]Java execute method from within a loop every few seconds

我有一個在我的測試應用程序中運行的線程,該線程內部有一個while循環。 當while循環運行時,我想每30秒從此while循環中執行一個方法。 在while循環內,不想休眠線程或停止循環,它必須運行並且每30秒調用一次該方法。

 Thread myThread = new Thread() {
     @Override
     public void run() {
        //my code that runs with a loop
        //while loop here that runs and needs to execute method every 30 seconds, if condition met continue else break;
     };
     myThread.start();
 }

等待,您可以使用

Thread.sleep(milliseconds);

有關文檔,請參見此處

如果您在循環中等待30秒,則每30秒+函數執行時間就會發生一次。 只要您的函數調用僅花費毫秒,就和以更復雜的方式進行操作一樣精確。

如果您希望循環繼續運行,但又不想啟動新Thread ,則可以使用當前時間

long lastCall = 0;

while(bla) {
    if(System.currentTimeMillis() - lastCall > 30000) {
        lastCall = System.currentTimeMillis();
        callTheFunction();
    }
}

將其放在執行線程的位置:

Thread.sleep(30000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM