Utilizzo della classe Timer e dell’interfaccia TimerTask in Java

tramite la classe Timer è possibile schedulare un’azione, che verrà eseguita ogni tot millisecondi. L’utilizzo è molto semplice:

Occorre definire una classe che estenda l’interfaccia TimerTask, ad esempio:

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Ilthread extends java.util.TimerTask {

String nome;

public Ilthread(String nome){

this.nome = nome;

}

public void run(){

System.out.println("Thread: " + nome + " - " + getData());

}

private String getData(){
...
}

}

Per utilizzarla è sufficiente:

Ilthread trd1 = new Ilthread("1");
Timer orologio = new Timer();
orologio.schedule(trd1, 0, 10000);

Ed il gioco è fatto. Per fare una prova, ho creato un’altra classe, chiamata IlthreadCrash, dove ho sostituito il metodo run con il seguente:

public void run(){

int i = 10 / 0;
System.out.println("Thread: " + nome + " - " + getData());

}

forzando così una situazione di errore. Il codice:

Ilthread trd1 = new Ilthread("1");
Timer orologio = new Timer();
orologio.schedule(trd1, 0, 10000);

Ilthread trd2 = new Ilthread("2");
Timer orologio2 = new Timer();
orologio2.schedule(trd2, 0, 7000);

IlthreadCrash trd3 = new IlthreadCrash("3");
Timer orologio3 = new Timer();
orologio3.schedule(trd3, 0, 4000);

si ottiene:

Quindi i primi due thread continuano tranquillamente a rimanere in esecuzione, mentre il terzo, che è andato in crash ha terminato la sua corsa.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>