Java Thread每隔X秒

时间:2010-08-22 13:42:37

标签: java

以给定的速率安排一段Java代码的最简单方法是什么?

4 个答案:

答案 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之前,您使用了TimerTimerTask

timer.scheduleAtFixedRate(new TimerTask() {
  @Override
  public void run() {
    // do staff
  }
}, 0, 5000);

答案 1 :(得分:8)

使用ScheduledExecutorService

看看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));