PRATIQUE JAVA 
Lancer une action à intervalles réguliers
 
"Comment puis-je mettre en place un évènement qui se répète toutes les 10 secondes ?" (27/06/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Comment souvent, la réponse se trouve dans la vaste API de Java, en l'occurrence au sein des classes Timer et TimerTask, la première permettant le lancement d'instance de la seconde. En clair, on définir la tâche à accomplir à l'aide de la classe TimerTask, et on l'exécute, au besoin la répète, avec Timer.

La classe TimerTask implémente une méthode run(), où l'on placera le code à lancer périodiquement. Ensuite, il faut créer un flux (thread) à partir de la classe Timer, et indique le temps entre deux exécutions du code. Finalement, la méthode cancel() de Timer permet de mettre un terme à la répétition.

public class RepetAction {
  Timer t;

  public RepetAction() {
    t = new Timer();
    t.schedule(new MonAction(), 0, 1*1000);
    }

  class MonAction extends TimerTask {
    int nbrRepetitions = 3;

    public void run() {
      if (nbrRepetitions > 0) {
        System.out.println("Ca bosse dur!");
        nbrRepetitions--;
      } else {
        System.out.println("Terminé!");
        t.cancel();
        }
      }
    }
  }
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page