Ho provato di tutto. Questo uno troppo How to stop the task scheduled in Java.util.Timer classCome interrompere immediatamente l'attività pianificata nella classe Java.util.Timer
Ho un compito che implementa java.util.TimerTask
chiamo questo compito in 2 modi:
mi Timer programmatore in questo modo:
timer. pianificazione (timerTask, 60 * 1000);
a volte ho bisogno di quel lavoro per iniziare immediatamente e deve annullare TimerTask se c'è qualche che sta lavorando
cancelCurrentWork(); timer.schedule (timerTask, 0);
Questa implementazione non si ferma il lavoro in corso: (documentazione dice: Se l'attività è in esecuzione quando si verifica questa chiamata, l'attività verrà eseguita fino al completamento, ma non potrà mai funzionare ancora)
Ma io bisogno di fermarsi.
public static void cancelCurrentwork() {
if (timerTask!= null) {
timerTask.cancel();
}
}
Questa implementazione annulla semplicemente il timer ma lascia attualmente il compito da completare.
public static void cancelCurrentwork() {
if (timer!= null) {
timer.cancel();
}
}
C'è un modo timer STOP taks esecuzione attuale, qualcosa come Thread.kill() o qualcosa del genere? Quando ho bisogno che quell'attività si interrompa, voglio che perda tutti i suoi dati.
E come interrompere il lavoro dall'interno dell'attività? Potrei controllare con booleano, ma quale metodo dovrei chiamare allora? this.cancel()? – vale4674
E altra domanda: qualche API come ScheduledExecutorService o qualcosa del genere ti permette di ARRESTARE l'attività? – vale4674
No, si ritorna semplicemente dal metodo 'run'. – aioobe