在我的情况下,我创建了一个对象并计划在20分钟后释放它(不需要准确性)。我知道使用java.util.Timer
我可以创建一个计时器。但我只想运行一次。之后,计时器应该停止并被释放。
有没有像javascript中的setTimeOut()
一样的方式?
感谢。
答案 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);
}
}