Minuteur Java

Rashmi Patidar 12 octobre 2023
  1. Planifier une tâche ponctuelle avec Timer en Java
  2. Programmer une minuterie de répétition en Java
Minuteur Java

Timer est un service disponible dans le langage de programmation Java qui permet aux utilisateurs de planifier un événement futur. Ces événements futurs peuvent être ponctuels ou répétés à intervalles de temps réguliers. Il peut y avoir des déclencheurs que nous utilisons pour initier des événements futurs.

Planifier une tâche ponctuelle avec Timer en Java

import java.util.Timer;
import java.util.TimerTask;

public class StopWatch {
  Timer timer;

  public StopWatch(int seconds) {
    timer = new Timer();
    timer.schedule(new StopTask(), seconds * 1000);
  }

  public static void main(String[] args) {
    new StopWatch(10);
    System.out.println("StopWatch Started.");
  }

  class StopTask extends TimerTask {
    public void run() {
      System.out.println("Time Up!");
      timer.cancel();
    }
  }
}

Dans le bloc de code ci-dessus, nous avons créé une classe publique nommée la classe StopWatch. Il a son constructeur public, qui prend le temps en quelques secondes. Dans le bloc constructeur, une instance de minuteur est créée. Au cours de l’instance du timer, la méthode schedule est appelée. Cette tâche de méthode consiste à planifier l’événement spécifique à un laps de temps donné. Il faut deux paramètres TimerTask instance et le délai. Nous définissons le délai en millisecondes. La méthode lève IllegalArgumentException lorsque le délai défini défini est invalide, IllegalArgumentException lorsque la tâche fournie est déjà planifiée ou annulée. Il lève également NullPointerException lorsque l’instance de tâche fournie est nulle.

Juste en dessous du constructeur, nous avons la méthode main à partir de laquelle l’exécution proprement dite commence. Il crée une nouvelle instance de la classe StopWatch avec un délai défini, qui exécute en interne l’instruction dans le bloc constructeur.

Sous la méthode main, une classe interne nommée StopTask est définie qui étend une classe abstraite TimerTask. TimerTask est une classe abstraite qui a une méthode abstraite appelée la méthode run. La méthode doit être surchargée dans la classe StopTask, et si elle n’est pas surchargée, la classe devrait elle-même devenir abstraite. Maintenant, dans la méthode run, nous avons arrêté le chronomètre avec la méthode cancel. La méthode supprime toute tâche actuellement planifiée et met fin à la tâche du minuteur.

Ci-dessous se trouve la sortie du bloc de code ci-dessus. La deuxième ligne est imprimée lorsque le retard dans la méthode de planification est rencontré.

StopWatch Started.
Time Up!

Programmer une minuterie de répétition en Java

Nous allons modifier le code ci-dessus pour créer une minuterie répétitive. La minuterie répétée est exécutée à plusieurs reprises à intervalles de temps réguliers.

Dans le bloc de code ci-dessous, nous avons créé une instance Timer. L’utilisation de la variable d’instance est d’appeler une méthode scheduleAtFixedRate, qui planifie les événements futurs. La méthode a diverses implémentations. Celui que nous avons utilisé prend trois paramètres. Tout d’abord, une instance TimerTask contient des instructions liées à l’action que nous voulons effectuer à l’avenir. Ensuite, la variable delay définit le temps d’exécution de la tâche ou de l’événement. Le dernier est la period qui définit le temps entre les appels successifs de l’événement. Cette méthode lève des exceptions qui incluent les exceptions NullPointerException IllegalArgument et IllegalState.

import java.util.Timer;
import java.util.TimerTask;

public class RepeatedTimer {
  public static void main(String[] args) {
    Timer timer = new Timer();
    System.out.println("Stop Watch Started.");
    timer.scheduleAtFixedRate(new RepeatedTask(), 500, 1000);
  }

  static class RepeatedTask extends TimerTask {
    public void run() {
      System.out.println("Running!");
    }
  }
}

Vous trouverez ci-dessous le résultat sans fin du futur événement prévu.

Running!
Running!
Running!
Running!
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - Java Timer