Java Timer, TimerTask, Reminder Class Tutorial mit Beispiel

Veröffentlicht: 2021-02-04
Java Timer, TimerTask, Reminder Class Tutorial mit Beispiel

java.util.Timer ist eine Hilfsklasse, die verwendet werden kann, um einen Thread so zu planen, dass er zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt wird. Die Java-Timer-Klasse kann verwendet werden, um eine Aufgabe so zu planen, dass sie einmalig oder in regelmäßigen Abständen ausgeführt wird.

java.util.TimerTask ist eine abstrakte Klasse, die eine Runnable-Schnittstelle implementiert, und wir müssen diese Klasse erweitern, um unsere eigene TimerTask zu erstellen, die mit der Java-Timer -Klasse geplant werden kann.

Die Timer-Klasse ist Thread-sicher, und mehrere Threads können ein einzelnes Timer-Objekt gemeinsam nutzen, ohne dass eine externe Synchronisierung erforderlich ist. Die Timer-Klasse verwendet java.util.TaskQueue, um Aufgaben in bestimmten regelmäßigen Intervallen hinzuzufügen, und es kann jederzeit nur einen Thread geben, der die TimerTask ausführt, z. B. wenn Sie einen Timer erstellen, der alle 10 Sekunden ausgeführt wird, aber die Ausführung eines einzelnen Threads 20 Sekunden dauert. dann fügt das Timer-Objekt weiterhin Aufgaben zur Warteschlange hinzu und sobald ein Thread beendet ist, benachrichtigt es die Warteschlange und ein anderer Thread beginnt mit der Ausführung.

Java-Timer-Klasse

Die Timer-Klasse verwendet Object Wait- und Notification-Methoden, um die Aufgaben zu planen. TimerTask ist eine abstract class und wir erben sie, um eine konkrete Implementierung bereitzustellen. Die TimerTask-Klasse implements Runnable interface , sodass es sich um einen Thread handelt, und daher ist Ihre Implementierung von TimerTask auch ein Thread.

Sehr einfaches Beispiel für Timer und TimerTask: Task wird ausgeführt, sobald 5 seconds vergangen sind.

Ergebnis:

Dieses einfache Programm veranschaulicht die folgenden grundlegenden Teile der Implementierung und Planung einer Aufgabe, die von einem Timer-Thread ausgeführt werden soll:

  • Implementieren Sie eine benutzerdefinierte Unterklasse von TimerTask . Die run -Methode enthält den Code, der die Aufgabe ausführt. In diesem Beispiel heißt die Unterklasse CrunchifyReminder.
  • Erstellen Sie einen Thread, indem Sie die Timer -Klasse instanziieren.
  • Instanziieren Sie das TimerTask Objekt ( new CrunchifyReminder() ).
  • Planen Sie die Timer-Aufgabe zur Ausführung.

Wie kann ich diese TimerTask wiederholt ausführen?

Ergebnis:

Standardmäßig wird ein Programm so lange ausgeführt, wie seine Timer-Threads ausgeführt werden. Sie können einen Timer-Thread auf vier Arten beenden:

  • Rufen Sie cancel für den Timer auf. Sie können dies von überall im Programm aus tun, z. B. von der run -Methode einer Timer-Aufgabe aus.
  • Machen Sie den Thread des Timers zu einem „Daemon“, indem Sie den Timer wie folgt erstellen: new Timer(true) . Wenn die einzigen im Programm verbleibenden Threads Daemon-Threads sind, wird das Programm beendet.
  • Nachdem alle geplanten Tasks des Timers ausgeführt wurden, entfernen Sie alle Verweise auf das Timer -Objekt. Schließlich wird der Thread des Zeitgebers beendet.
  • Rufen Sie die Methode System.exit auf, wodurch das gesamte Programm (und alle seine Threads) beendet werden.