Timer Java, TimerTask, Tutorial Clasa Memento cu Exemplu

Publicat: 2021-02-04
Timer Java, TimerTask, Tutorial Clasa Memento cu Exemplu

java.util.Timer este o clasă de utilitate care poate fi folosită pentru a programa un fir de execuție pentru a fi executat la un anumit moment în viitor. Clasa Java Timer poate fi folosită pentru a programa o sarcină să fie executată o singură dată sau să fie rulată la intervale regulate.

java.util.TimerTask este o clasă abstractă care implementează interfața Runnable și trebuie să extindem această clasă pentru a crea propriul nostru TimerTask care poate fi programat folosind clasa java Timer .

Clasa Timer este sigură pentru fire și mai multe fire pot partaja un singur obiect Timer fără a fi nevoie de sincronizare externă. Clasa Timer folosește java.util.TaskQueue pentru a adăuga sarcini la un interval regulat dat și în orice moment poate exista un singur fir care rulează TimerTask, de exemplu dacă creați un Timer care să ruleze la fiecare 10 secunde, dar executarea unui singur fir durează 20 de secunde, apoi obiectul Timer va continua să adauge sarcini la coadă și de îndată ce un fir de execuție este terminat, va notifica coada și un alt fir va începe să se execute.

Clasa Java Timer

Clasa Timer folosește metode Object wait și notify pentru a programa sarcinile. TimerTask este o abstract class și o moștenim pentru a oferi implementare concretă. Clasa TimerTask implements interface Runnable , deci este un fir și, prin urmare, implementarea dvs. a TimerTask este, de asemenea, un fir.

Timer și TimerTask foarte simplu Exemplu: Sarcina se execută după ce au trecut 5 seconds .

Rezultat:

Acest program simplu ilustrează următoarele părți de bază ale implementării și programării unei sarcini care urmează să fie executată de un fir de cronometru:

  • Implementați o subclasă personalizată de TimerTask . Metoda run conține codul care realizează sarcina. În acest exemplu, subclasa este numită CrunchifyReminder.
  • Creați un fir prin instanțierea clasei Timer .
  • Instanciați obiectul TimerTask ( new CrunchifyReminder() ).
  • Programați sarcina de cronometru pentru execuție.

Cum pot efectua acest TimerTask în mod repetat?

Rezultat:

În mod implicit, un program continuă să ruleze atâta timp cât se execută firele sale de timer. Puteți încheia un thread de temporizator în patru moduri:

  • Invocați cancel pe cronometru. Puteți face acest lucru de oriunde în program, cum ar fi metoda de run a unei sarcini de cronometru.
  • Faceți firul temporizatorului un „demon” creând cronometrul astfel: new Timer(true) . Dacă singurele fire rămase în program sunt fire daemon, programul se iese.
  • După ce toate sarcinile programate ale temporizatorului s-au încheiat, eliminați toate referințele la obiectul Timer . În cele din urmă, firul temporizatorului se va termina.
  • Invocați metoda System.exit , care face ca întregul program (și toate firele sale) să iasă.