繁体   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