Как остановить задачу, запланированную в классе Java.util.Timer - PullRequest
76 голосов
/ 11 сентября 2009

Я использую класс java.util.timer и использую его метод расписания для выполнения какой-либо задачи, но после выполнения его 6 раз мне нужно остановить его задачу.

Как мне это сделать?

Ответы [ 5 ]

113 голосов
/ 11 сентября 2009

Сохраните ссылку на таймер где-нибудь и используйте:

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 ....

}
48 голосов
/ 11 сентября 2009

Либо вызовите cancel() на Timer, если это все, что он делает, либо cancel() на TimerTask, если у самого таймера есть другие задачи, которые вы хотите продолжить.

23 голосов
/ 18 июня 2013

Вы должны остановить задачу, которую вы запланировали на таймере: Ваш таймер:

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

Обратите внимание, что просто отмена таймера не прекратит выполнение текущих таймеров.

10 голосов
/ 29 января 2015
timer.cancel();  //Terminates this timer,discarding any currently scheduled tasks.

timer.purge();   // Removes all cancelled tasks from this timer's task queue.
0 голосов
/ 08 октября 2016

Завершение работы таймера один раз после пробуждения в определенное время в миллисекундах.

Timer t = new Timer();
t.schedule(new TimerTask() {
            @Override
             public void run() {
             System.out.println(" Run spcific task at given time.");
             t.cancel();
             }
 }, 10000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...