Java每隔几秒就从循环内执行一次方法

时间:2014-04-11 13:10:36

标签: java

我有一个在我的测试应用程序中运行的线程,在线程内部有一个while循环。当while循环运行时,我希望每隔30秒从此循环内执行一个方法。在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();
 }

2 个答案:

答案 0 :(得分:3)

要等待,您可以使用

Thread.sleep(milliseconds);

有关文档,请参阅here

如果你在循环中等待30秒,它会每30秒发生一次+你的功能执行时间。只要您的函数调用只需要几毫秒,这就像以更复杂的方式执行它一样精确。

如果您希望循环继续运行但又不想发布新的Thread,则可以使用the current Time

long lastCall = 0;

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

答案 1 :(得分:1)

将其放置在执行线程的位置:

Thread.sleep(30000);