Erstellen Sie einen Countdown-Timer in Java

Rupam Yadav 12 Oktober 2023
  1. Countdown-Timer in Java mit ScheduledExecutorService
  2. Countdown-Timer in Java mit Timer und TimerTask
Erstellen Sie einen Countdown-Timer in Java

Heute zeigen wir Ihnen, wie Sie in Java mit zwei Methoden einen Countdown-Timer erstellen können, ohne sich auf eine Bibliothek von Drittanbietern verlassen zu müssen. Wir können entweder den Timer in einem GUI-Fenster oder die Konsole verwenden, um ihn zu testen. Schauen Sie sich die Codes an, die wir unten haben!

Countdown-Timer in Java mit ScheduledExecutorService

In dieser ersten Methode verwenden wir die Schnittstelle ExecutorService, um ihre Methode newScheduledThreadPool() aufzurufen, die einen Thread-Pool erstellt, der dieselbe feste Anzahl von zugewiesenen Threads verwendet. In der Methode newScheduledThreadPool() übergeben wir die Anzahl der Threads, die wir im Pool haben wollen. In diesem Fall möchten wir, dass nur ein Thread den Timer ausführt.

Die Funktion Executors.newScheduledThreadPool() gibt ein ScheduledExecutorService-Objekt zurück, das wir scheduler genannt haben. Als nächstes überschreiben wir die Methode run() der Schnittstelle Runnable. Zur Ausführung des Threads wird eine Runnable-Instanz verwendet. In Runnable erstellen wir eine Variable countdownStarter und initialisieren diese mit der Zahl in Sekunden, ab der wir den Countdown-Timer starten wollen.

Jetzt geben wir in der Methode run() countdownStarter aus und verringern seinen Wert um eins. Um den Timer zu stoppen, wenn er Null erreicht, erstellen wir eine Bedingung, um den Wert countdownStarter zu überprüfen. Wenn sein Wert kleiner als Null wird, druckt es eine Nachricht und fährt den scheduler, den Executor Service, mit dem Befehl scheduler.shutdown() herunter.

Schließlich verwenden wir das Objekt scheduler, um die Methode scheduleAtFixedRate() aufzurufen, die die gegebene Aktion periodisch ausführt und vier Argumente akzeptiert. Das erste Argument ist die runnable Instanz; die zweite ist die Zeitverzögerung bei der ersten Ausführung; die dritte ist die Verzögerung zwischen den Aktionen. Hier haben wir die Verzögerung als eine Sekunde angegeben, die einer Sekunde entsprechen sollte, wie das vierte Argument nahelegt.

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);
  }
}

Ausgabe:

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

Countdown-Timer in Java mit Timer und TimerTask

In diesem Beispiel verwenden wir zwei Klassen, Timer und TimerTask, die mit dem Paket java.util geliefert werden. Beide Klassen werden verwendet, um Aufgaben für die Ausführung im Hintergrundthread zu planen. In diesem Beispiel verwenden wir das Objekt jFrame, um den Timer in einem GUI-Fenster anzuzeigen. Zuerst erstellen wir ein jFrame-Objekt, dann ein jLabel, das den Text des Timers anzeigt. Wir setzen das Layout des Frames als FlowLayout() und legen die Position und Größe des Fensters fest.

Als nächstes fügen wir dem Rahmen das jLabel hinzu. Um den Countdown-Timer zu erstellen, erstellen wir ein Timer-Objekt und rufen dessen Methode scheduleAtFixedRate() auf, die die angegebene Aufgabe mit einer festen Rate plant und wiederholt, wie der Name schon sagt.

Da nun der Mate scheduleAtFixedRate() ein TimerTask-Objekt als erstes Argument verwendet, erzeugen wir ein Objekt mit new TimerTask(). Für das zweite und dritte Argument planen sie die auszuführende Aufgabe und den Zeitraum in Millisekunden zwischen jeder Ausführung.

Für den nächsten Schritt müssen wir eine Variable erstellen und sie mit der Nummer initialisieren, mit der wir den Countdown starten möchten. Dann rufen wir die Methode run() auf und setzen den Text der Komponente jLabel als i. Um den Timer zu stoppen, rufen wir timer.cancel() auf.

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);
  }
}

Ausgabe:

Java-Countdown-Timer

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

Verwandter Artikel - Java Timer