以给定的速率安排一段Java代码的最简单方法是什么?
答案 0 :(得分:79)
在带有ScheduledExecutorService
的Java 5+中:
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// do stuff
}
}, 0, 5, TimeUnit.SECONDS);
以上方法受到青睐。在Java 5之前,您使用了Timer
和TimerTask
:
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// do staff
}
}, 0, 5000);
答案 1 :(得分:8)
看看Executors.newScheduledThreadPool
。它允许您创建ScheduledExecutorService
,允许您定期提交Runnable
。
答案 2 :(得分:3)
while (true) {
thread.sleep(1000)
method();
}
在许多情况下会有更好的选择。但这是以1000ms + n的间隔实现method()的常规执行的最简单方法(其中n是执行方法花费的时间())
当然不是1000,你可以放任何你想要的毫秒值。在另一个线程控制的标志上实现while循环也是一个想法;这样就可以在不必杀死程序的情况下停止执行循环。
答案 3 :(得分:2)
使用以下代码:
Timer timer = new Timer();
timer.schedule( new TimerTask()
{
public void run() {
// do your work
}
}, 0, 60*(1000*1));