如何停止在Java.util.Timer类中安排的任务

时间:2009-09-11 05:23:35

标签: java

我正在使用java.util.timer类,我正在使用它的schedule方法来执行某些任务,但是在执行了6次后我必须停止它的任务。

我该怎么做?

5 个答案:

答案 0 :(得分:113)

在某处保留对计时器的引用,并使用:

timer.cancel();
timer.purge();

停止正在做的事。您可以使用static int将此代码放入正在执行的任务中,以计算您到处的次数,例如

private static int count = 0;
public static void run() {
     count++;
     if (count >= 6) {
         timer.cancel();
         timer.purge();
         return;
     }

     ... perform task here ....

}

答案 1 :(得分:48)

要么cancel() on the Timer要么就是这样,要么cancel() on the TimerTask如果计时器本身还有其他你希望继续的任务。

答案 2 :(得分:23)

您应该停止在计时器上安排的任务: 你的计时器:

Timer t = new Timer();
TimerTask tt = new TimerTask() {
    @Override
    public void run() {
        //do something
    };
}
t.schedule(tt,1000,1000);

为了停止:

tt.cancel();
t.cancel(); //In order to gracefully terminate the timer thread

请注意,只是取消定时器不会终止正在进行的时间任务。

答案 3 :(得分:10)

timer.cancel();  //Terminates this timer,discarding any currently scheduled tasks.

timer.purge();   // Removes all cancelled tasks from this timer's task queue.

答案 4 :(得分:0)

在特定时间(以毫秒为单位)唤醒后终止计时器。

Timer t = new Timer();
t.schedule(new TimerTask() {
            @Override
             public void run() {
             System.out.println(" Run spcific task at given time.");
             t.cancel();
             }
 }, 10000);