Tutorial Java Timer, TimerTask, Reminder Class con esempio

Pubblicato: 2021-02-04
Tutorial Java Timer, TimerTask, Reminder Class con esempio

java.util.Timer è una classe di utilità che può essere utilizzata per pianificare un thread da eseguire in un determinato momento in futuro. La classe Java Timer può essere utilizzata per pianificare un'attività da eseguire una sola volta o da eseguire a intervalli regolari.

java.util.TimerTask è una classe astratta che implementa l'interfaccia Runnable e abbiamo bisogno di estendere questa classe per creare il nostro TimerTask che può essere programmato usando la classe java Timer .

La classe Timer è thread-safe e più thread possono condividere un singolo oggetto Timer senza necessità di sincronizzazione esterna. La classe Timer utilizza java.util.TaskQueue per aggiungere attività a un determinato intervallo regolare e in qualsiasi momento può esserci un solo thread che esegue TimerTask, ad esempio se stai creando un timer da eseguire ogni 10 secondi ma l'esecuzione di un singolo thread richiede 20 secondi, quindi l'oggetto Timer continuerà ad aggiungere attività alla coda e non appena un thread è terminato, avviserà la coda e un altro thread inizierà l'esecuzione.

Classe timer Java

La classe Timer utilizza i metodi di attesa e notifica dell'oggetto per pianificare le attività. TimerTask è una abstract class e la ereditiamo per fornire un'implementazione concreta. La classe TimerTask implements interface Runnable quindi è un thread e quindi anche l'implementazione di TimerTask è un thread.

Esempio molto semplice di Timer e TimerTask: l'attività viene eseguita una volta trascorsi 5 seconds .

Risultato:

Questo semplice programma illustra le seguenti parti di base dell'implementazione e della pianificazione di un'attività da eseguire da un thread timer:

  • Implementa una sottoclasse personalizzata di TimerTask . Il metodo run contiene il codice che esegue l'attività. In questo esempio, la sottoclasse è denominata CrunchifyReminder.
  • Crea un thread istanziando la classe Timer .
  • Crea un'istanza dell'oggetto TimerTask ( new CrunchifyReminder() ).
  • Pianificare l'attività timer per l'esecuzione.

Come posso eseguire questo TimerTask ripetutamente?

Risultato:

Per impostazione predefinita, un programma continua a funzionare finché i thread del timer sono in esecuzione. Puoi terminare un thread timer in quattro modi:

  • Richiama l' cancel sul timer. Puoi farlo da qualsiasi punto del programma, ad esempio dal metodo di run di un'attività timer.
  • Rendi il thread del timer un "demone" creando il timer in questo modo: new Timer(true) . Se gli unici thread rimasti nel programma sono thread daemon, il programma esce.
  • Al termine dell'esecuzione di tutte le attività pianificate del timer, rimuovere tutti i riferimenti all'oggetto Timer . Alla fine, il thread del timer terminerà.
  • Richiamare il metodo System.exit , che fa uscire l'intero programma (e tutti i suoi thread).