所以我想知道在java中是否有一种在特定时间间隔内运行一行的方法。我目前正在开发一个Android应用程序,我正在尝试运行相同的几秒钟。
提前谢谢。
答案 0 :(得分:2)
检查它们,并选择最适合您的方法:
Timer ScheduledExecutorService
我认为Timer
对于这种情况更好。
计时器 - 示例:
Timer timer = new Timer();
TimerTask task = new TimerTask()
{
@Override
public void run()
{
method();
}
};
// every 3 seconds
timer.schedule(task, 0, 3000);
ScheduledExecutorService - 来自Android doc的示例:
这是一个带有设置ScheduledExecutorService的方法的类 每隔十秒钟发出一小时的哔声:
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep");
};
final ScheduledFuture beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}}
所有这些都会创建一个线程,因此您不会阻止UI线程。
答案 1 :(得分:0)
long timestart = System.currentTimeMillis();
int desiredTimeInSecs = 3;
while (System.currentTimeMillis() < timeStart + desiredTimeInSecs*1000){
yourCommand();
}
我会同时不阻止你的UIThread。