我有一个在我的测试应用程序中运行的线程,在线程内部有一个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();
}
答案 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);