Java Timer und TimerTask

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Java Timer und TimerTask werden verwendet, um Aufgaben in der Zukunft zu planen. TimerTask ist eine abstrakte Klasse, die das Runnable-Interface implementiert, was dabei hilft, Aufgaben in der Timer-Klasse zu planen. Wir können eine Aufgabe mithilfe der TimerTask-Klasse definieren und sie mit der Timer-Klasse planen. Timer verwendet Hintergrundthreads zum Planen von Aufgaben.

Importieren der erforderlichen Pakete

Importieren Sie die erforderlichen Pakete für Timer und TimerTask mit dem folgenden Code.

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

Erstellen einer Aufgabe mit TimerTask

Erstellen Sie eine Aufgabe, die mithilfe der TimerTask-Klasse ausgeführt werden soll. Überschreiben Sie die run()-Methode, um die auszuführende Aufgabe zu definieren. Beispielsweise können wir eine Aufgabe erstellen, um "Hello, World!" auszugeben, wie folgt:

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Hello, World!");
    }
};

Erstellen eines Timer-Objekts

Erstellen Sie ein Timer-Objekt mit dem folgenden Code.

Timer timer = new Timer();

Planen der Aufgabe mit Timer

Verwenden Sie die schedule()-Methode der Timer-Klasse, um die Aufgabe zu planen. Beispielsweise können wir die folgende Codezeile verwenden, um die Aufgabe nach 1000 Millisekunden (einem Sekunden) auszuführen:

timer.schedule(task, 1000);

Dadurch wird die Aufgabe mit einer Verzögerung von einer Sekunde geplant.

Planen der wiederholenden Ausführung einer Aufgabe

Wir können auch eine Aufgabe planen, die wiederholt ausgeführt wird, indem wir die schedule()-Methode mit einem Zeitversatz und einer Wiederholungsphase als Parameter verwenden. Im folgenden Beispiel planen wir eine Aufgabe, die alle 2 Sekunden "Hello, World!" ausgibt, beginnend nach einem Zeitversatz von 1 Sekunde.

timer.schedule(task, 1000, 2000);

Stornieren der Aufgabe

Wir können auch eine geplante Aufgabe mit der cancel()-Methode der TimerTask-Klasse stornieren. Im folgenden Beispiel wird eine Aufgabe geplant, die nur einmal ausgeführt und dann gestoppt wird.

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Task is being executed...");
        cancel();
    }
};
timer.schedule(task, 1000);

Verwenden der Methode scheduleAtFixedRate()

Wir können die scheduleAtFixedRate()-Methode verwenden, um eine Aufgabe so zu planen, dass sie mit einer festen Rate ausgeführt wird, unabhängig von der Ausführungszeit der vorherigen Ausführung. Beispielsweise können wir eine Aufgabe planen, die alle 2 Sekunden "Hello, World!" ausgibt, ohne auf die Ausführungsdauer der Aufgabe zu achten, indem wir den folgenden Code verwenden:

timer.scheduleAtFixedRate(task, 1000, 2000);

Verwenden von ExecutorService

Wir können ExecutorService verwenden, um TimerTask-Objekte zu planen. Hier verwenden wir ScheduledExecutorService, um eine Aufgabe zu planen. Beispielsweise können wir eine Aufgabe erstellen, die alle 2 Sekunden "Hello, World!" ausgibt, indem wir den folgenden Code verwenden:

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 1000, 2000, TimeUnit.MILLISECONDS);

Kompilieren und Ausführen des Codes

Schließlich kompilieren und führen Sie den Code mit dem folgenden Befehl in der Konsole aus:

javac TimerTaskDemo.java && java TimerTaskDemo

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Java Timer und TimerTask verwendet, um Aufgaben zu planen und auszuführen zu einem bestimmten Zeitpunkt oder mit einer Verzögerung. Wir haben auch gelernt, wie man eine wiederholende Aufgabe plant, eine Aufgabe stornieren kann, die scheduleAtFixedRate()-Methode verwendet und ExecutorService verwendet, um TimerTask-Objekte zu planen.