Faire un compte à rebours en Java

Rupam Yadav 12 octobre 2023
  1. Compte à rebours en Java à l’aide de ScheduledExecutorService
  2. Compte à rebours en Java à l’aide de Timer et TimerTask
Faire un compte à rebours en Java

Aujourd’hui, nous allons vous montrer comment créer un compte à rebours en Java à l’aide de deux méthodes sans dépendre d’une bibliothèque tierce. Nous pouvons soit utiliser le minuteur dans une fenêtre graphique, soit la console juste pour le tester. Découvrez les codes que nous avons ci-dessous!

Compte à rebours en Java à l’aide de ScheduledExecutorService

Dans cette première méthode, nous utilisons l’interface ExecutorService pour appeler sa méthode newScheduledThreadPool(), qui crée un pool de threads qui utilise le même nombre fixe de threads affectés. Dans la méthode newScheduledThreadPool(), on passe le nombre de threads que l’on veut dans le pool. Dans ce cas, nous voulons qu’un seul thread exécute le minuteur.

La fonction Executors.newScheduledThreadPool() renvoie un objet ScheduledExecutorService que nous avons nommé scheduler. Ensuite, nous surchargeons la méthode run() de l’interface Runnable. Une instance Runnable est utilisée pour exécuter le thread. Dans Runnable, nous créons une variable countdownStarter et l’initialisons avec le nombre en secondes à partir duquel nous voulons démarrer le compte à rebours.

Maintenant, à l’intérieur de la méthode run(), nous affichons countdownStarter, et diminuons sa valeur d’un. Pour arrêter le timer lorsqu’il atteint zéro, nous créons une condition pour vérifier la valeur countdownStarter. Si sa valeur devient inférieure à zéro, il imprime un message et arrête le scheduler, qui est le service d’exécution à l’aide de la commande scheduler.shutdown().

Enfin, nous utilisons l’objet scheduler pour appeler la méthode scheduleAtFixedRate() qui exécute l’action donnée périodiquement et prend quatre arguments. Le premier argument est l’instance runnable ; le second est le délai de la première exécution ; le troisième est le délai entre les actions. Ici, nous avons donné un délai qui devrait être égal à une seconde, comme le suggère le quatrième argument.

import static java.util.concurrent.TimeUnit.SECONDS;

import java.util.concurrent.*;

public class Countdown {
  public static void main(String[] args) {
    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    final Runnable runnable = new Runnable() {
      int countdownStarter = 20;

      public void run() {
        System.out.println(countdownStarter);
        countdownStarter--;

        if (countdownStarter < 0) {
          System.out.println("Timer Over!");
          scheduler.shutdown();
        }
      }
    };
    scheduler.scheduleAtFixedRate(runnable, 0, 1, SECONDS);
  }
}

Production:

20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Timer Over!

Compte à rebours en Java à l’aide de Timer et TimerTask

Dans cet exemple, nous utilisons deux classes, Timer et TimerTask, fournies avec le package java.util. Les deux classes sont utilisées pour planifier les tâches à exécuter dans le thread d’arrière-plan. Pour cet exemple, nous utilisons l’objet jFrame pour afficher le timer dans une fenêtre GUI. Tout d’abord, nous créons un objet jFrame, puis un jLabel qui affiche le texte du timer. Nous définissons la disposition du cadre comme FlowLayout() et définissons la position et la taille de la fenêtre.

Ensuite, nous ajoutons le jLabel au cadre. Pour créer le compte à rebours, nous créons un objet Timer et appelons sa méthode scheduleAtFixedRate(), qui planifie et répète la tâche spécifiée à un taux fixe, comme son nom l’indique.

Maintenant, comme le partenaire scheduleAtFixedRate() prend un objet TimerTask comme premier argument, nous créons un objet en utilisant new TimerTask(). Pour les deuxième et troisième arguments, ils planifient la tâche à exécuter et la période en millisecondes entre chaque exécution.

Pour l’étape suivante, nous devons créer une variable et l’initialiser avec le nombre avec lequel nous voulons commencer le compte à rebours. Ensuite, nous appelons la méthode run() et définissons le texte du composant jLabel comme i. Pour arrêter le timer, nous appelons timer.cancel().

import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;

public class Countdown {
  public static void main(String[] args) {
    JFrame jframe = new JFrame();
    JLabel jLabel = new JLabel();
    jframe.setLayout(new FlowLayout());
    jframe.setBounds(500, 300, 400, 100);

    jframe.add(jLabel);
    jframe.setVisible(true);

    Timer timer = new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {
      int i = 20;

      public void run() {
        jLabel.setText("Time left: " + i);
        i--;

        if (i < 0) {
          timer.cancel();
          jLabel.setText("Time Over");
        }
      }
    }, 0, 1000);
  }
}

Production:

compte à rebours java

Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Article connexe - Java Timer