如何设置计时器但不重复运行

时间:2011-09-28 18:38:43

标签: java

在我的情况下,我创建了一个对象并计划在20分钟后释放它(不需要准确性)。我知道使用java.util.Timer我可以创建一个计时器。但我只想运行一次。之后,计时器应该停止并被释放。

有没有像javascript中的setTimeOut()一样的方式?

感谢。

5 个答案:

答案 0 :(得分:3)

int numberOfMillisecondsInTheFuture = 10000; // 10 sec
Date timeToRun = new Date(System.currentTimeMillis()+numberOfMillisecondsInTheFuture);
Timer timer = new Timer();

timer.schedule(new TimerTask() {
        public void run() {
            // Task here ...
        }
    }, timeToRun);

修改上述内容,以便日后20分钟安排作业。

答案 1 :(得分:2)

答案 2 :(得分:0)

您可以启动一个新线程并使用等待的毫秒数调用sleep,然后执行您的指令(在任一线程上)。请参阅http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html以获取参考,如果您需要更多帮助,请查看各种在线主题教程。

答案 3 :(得分:0)

java.util.Timer中有取消方法:

http://download.oracle.com/javase/6/docs/api/java/util/Timer.html#cancel%28%29

但是,据我所知,如果你没有指定一个句点,在计时器中,计划任务只会运行一次。

答案 4 :(得分:0)

package com.stevej;

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class StackOverflowMain {

  public static void main(String[] args) {

    ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);

    Runnable myAction = new Runnable() {
      @Override
      public void run() {
        System.out.println("Hello (2 minutes into the future)");
      }
    };

    executor.schedule(myAction, 2, TimeUnit.MINUTES);
  }
}