De multiples threads peuvent partager entre eux une seule instance de timer à condition qu'il y'aura une synchronisation de threads java.
java.util.TimerTask est une classe abstraite qui implémente l'interface Runnable. On doit hériter de cette classe pour créer notre TimerTask qui va être ordonnancé en utilisant la classe timer. La classe timer utilise les méthodes wait et notify pour ordonnancer les processus.
Voici un exemple de l'implémentation de timer:
import java.awt.Toolkit;Sortie
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTache{
static Toolkit toolkit;
public TimerTache(){
toolkit = Toolkit.getDefaultToolkit();
TimerTask timerTask = new executetache();
//executer le timertask comme un thread deamon
Timer timer = new Timer(true);
//shedule la tache pour une futur execution dans un temps prédifini
timer.schedule(timerTask, 0, 1*1000);
System.out.println("TimerTask démaré");
//annuler après un certain temps de 10s
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
timer.cancel();
System.out.println("TimerTask arreté");
}
class executetache extends TimerTask {
@Override
public void run() {
System.out.println("Commence : "+new Date());
try {
//2 secondes pour accomplir la tache
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
toolkit.beep();
System.out.println("Finit : "+new Date());
}
}
public static void main(String args[]){
new TimerTache();
}
}
Cela est un exemple simple d'un gestionnaire de tâches. Timer va lancer une tâche chaque 1 seconde(1000 millisecondes) de façon répétitive et un intervalle fixe avec la méthode schedule() qui prend comme arguments:
- La tâche à ordonnancer.
- Le Temps avant que la tâche serait exécutée en millisecondes.
- Le Temps entre les exécutions successives des tâches ou la fréquence d’exécution en millisecondes.
La méthode Timer.cancel() annule le timer et toutes les tâches dans la file d'attente. Une fois que c'est fait, son thread daemon est aussi arrêté.
Références:
Oracle: Classe timer
Oracle: classe timerTask
java2s:Toolkit beep
javapoint: daemon thread
Commentaires (0)
Laisser un commentaire
Connectez-vous pour commenter
Rejoignez la discussion et partagez vos connaissances avec la communauté
Chargement des commentaires...