Używam java.util.Timer
klasy i używam jej metody harmonogramu do wykonania jakiegoś zadania, ale po wykonaniu jej 6 razy muszę przerwać jej zadanie.
Jak mam to zrobić?
Zachowaj gdzieś odniesienie do timera i użyj:
timer.cancel();
timer.purge();
przestać cokolwiek robi. Możesz umieścić ten kod wewnątrz zadania, które wykonujesz, za pomocą a, static int
aby policzyć, ile razy przeszedłeś, np
private static int count = 0;
public static void run() {
count++;
if (count >= 6) {
timer.cancel();
timer.purge();
return;
}
... perform task here ....
}
cancel
samo zadziała.Albo zadzwoń
cancel()
naTimer
razie to wszystko robi, albocancel()
naTimerTask
jeśli sam czasomierz ma inne zadania, które chcesz, aby kontynuować.źródło
Powinieneś zatrzymać zadanie zaplanowane dla timera: Twój timer:
Timer t = new Timer(); TimerTask tt = new TimerTask() { @Override public void run() { //do something }; } t.schedule(tt,1000,1000);
Aby zatrzymać:
tt.cancel(); t.cancel(); //In order to gracefully terminate the timer thread
Zwróć uwagę, że samo anulowanie licznika czasu nie zakończy trwających zadań czasowych.
źródło
timer.cancel(); //Terminates this timer,discarding any currently scheduled tasks. timer.purge(); // Removes all cancelled tasks from this timer's task queue.
źródło
Wyłącz stoper raz po przebudzeniu w określonym czasie w milisekundach.
Timer t = new Timer(); t.schedule(new TimerTask() { @Override public void run() { System.out.println(" Run spcific task at given time."); t.cancel(); } }, 10000);
źródło