Java Timer & TimerTask: So erstellst du geplante Aufgaben!

    Avatarbild von Preet Sanghavi
    Preet Sanghavi

    veröffentlicht am: 05.07.2022
    zuletzt aktualisiert am: 05.02.2023

    Die Java Timer & TimerTask-Klasse im Überblick!

    Die Java Timer-Klasse ist Teil des Pakets Java.util und hilft bei der einmaligen oder regelmäßigen Ausführung eines Jobs oder einer Aufgabe in einem bestimmten Zeitintervall. Ihre eingebauten Methoden können zur Planung von Aufgaben für ein bestimmtes Datum verwendet werden, z. B. um Erinnerungen zu setzen oder jemandem zum Geburtstag zu gratulieren.

    Wenn du eine geplante Aufgabe in einem Java-Programm erstellen willst, dann erweitere die abstrakte Klasse TimerTask. Die Klasse Timer verwendet dann den definierten Job oder Task für die Zeitplanung. Anders ausgedrückt: Java Timer ist ein Scheduler, und TimeTask ist die Aufgabe, die geplant werden muss.

    In diesem Artikel werden wir die Java Timer-Klasse und seine Funktionalität besprechen.

    So, lass und loslegen!

    Hinweis: Bevor du dich mit der Implementierung der Methoden der Timer-Klasse beschäftigst, solltest du einen Blick auf die Konstruktoren der Java Timer-Klasse werfen.

    Die Java Timer-Konstruktoren im Überblick

    Du kannst jeden der unten angegebenen Java Konstruktoren verwenden, um ein Timer-Objekt innerhalb deiner Java-Klasse zu erstellen:

    Java Timer KonstruktorBeschreibung
    Timer()Timer() ist der Standardkonstruktor der Java Timer-Klasse.
    Timer(boolean isDaemon)Der Konstruktor Timer(boolean isDaemon) wird verwendet, um ein Timer-Objekt mit einem zugehörigen Thread zu erstellen, der als Daemon ausgeführt wird.
    Timer(String name)Der Konstruktor Timer(String name) wird verwendet, um ein Java-Timer-Objekt mit dem angegebenen Namen zu erstellen.
    Timer(String name, boolean isDaemon)Timer(String name, boolean isDaemon) wird verwendet, um ein Java Timer-Objekt mit dem angegebenen name und dem zugehörigen Thread zu erstellen, das als Daemon ausgeführt werden kann.

    Die integrierten Java Timer-Methoden

    Hier haben wir einige der am häufigsten verwendeten Java Methoden der Java Timer-Klasse aufgelistet:

    Java Timer MethodeBeschreibung
    void schedule(TimerTask task, Date time)Die void schedule(TimerTask task, Date time) Java Timer-Methode wird verwendet, um eine Timer-Aufgabe entsprechend der angegebenen Zeit zu planen.
    void schedule(TimerTask task,long delay)Diese Java Timer-Methode wird für die Planung einer Timer-Aufgabe entsprechend der hinzugefügten Verzögerung verwendet.
    void scheduleAtFixedRate(TimerTask task, Date firsttime, long period)Diese Methode wird verwendet, um eine Timer-Aufgabe mit einer festen Ausführungsrate mit dem angegebenen Datum und Zeitraum zu planen.
    void cancel()Die Java Timer-Methode void cancel() wird verwendet, um den Timer zu beenden und alle geplanten Timer-Aufgaben außer der aktiven abzubrechen.
    int purge()Die Java Timer-Methode int purge() entfernt die abgebrochenen Aufgaben aus der Warteschlange und gibt die Anzahl der entfernten Aufgaben aus.

    Schauen wir uns nun einige Java Timer-Beispiele an.

    Wie erstellt man eine Java Timer-Aufgabe mit der geplanten Zeit?

    Im folgenden Beispiel planen wir eine submitAssignment-Aufgabe, die die Nachricht „Vergiss nicht deine Hausaufgabe abzugeben!“ anzeigt, wenn das Datum 2. November 2022 um 00:00 Mitternacht ist.

    Zu diesem Zweck importieren wir zunächst die Klassen Calendar, Timer und TimerTask aus den Paketen Java.util:

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

    Mehr über das Schlüsselwort Java import erfahren. Als Nächstes erstellen wir eine Instanz der Klasse Timer mit dem Namen time, die dabei hilft, die vergehende Zeit zu verfolgen, und hausaufgabenAbgeben ist die Aufgabe, die von der TimeTask ausgeführt werden soll:

    class MeinTimerProgramm {
        public static void main(String args[]) {
            Timer time = new Timer();
            TimerTask hausaufgabenAbgeben = new TimerTask() {
                @Override
                public void run() {
                    System.out.println("Vergiss nicht deine Hausaufgabe abzugeben!");
                }
            };
            Calendar date1 = Calendar.getInstance();
            date1.set(2022, Calendar.NOVEMBER, 2, 0, 0, 0);
            time.schedule(hausaufgabenAbgeben, date1.getTime());
        }
    }

    Wenn die angegebene Zeit erreicht ist, wird die Java Timer-Methode schedule() die Aufgabe hausaufgabenAbgeben mit dem Timer verknüpfen. Daraufhin wird die Methode run() der TimeTask submitAssignment ausgeführt und die hinzugefügte Erinnerung im Konsolenfenster ausgedruckt:

    Ausgabe auf der Konsole:

    Wie erstellt man eine Java Timer Task mit festgelegter Zeit und Periode?

    Anstelle der einfachen schedule()-Methode der Java Timer-Klasse werden wir nun die ScheduleAtFixedRate(submitAssignment, date.getTime(), 1000)-Methode verwenden, um die Aufgabe hausaufgabenAbgeben entsprechend der angegebenen Zeit mit einer Zählperiode von 1000 Sekunden (1 Sekunde) zu planen.

    Wir fügen auch einen Zähler x in die run()-Methode der TimerTask-Instanz submitAssignment ein, der angibt, dass die definierte Aufgabe nach zehn Sekunden ausgeführt wird:

    import java.util.Calendar;
    import java.util.Timer;
    import java.util.TimerTask;
    
    class Test {
        public static void main(String args[]) {
            Timer time = new Timer();
            TimerTask hausaufgabenAbgeben = new TimerTask() {
                int x = 10;
                @Override
                public void run() {
                    if (x > 0) {
                        System.out.println(x);
                        x--;
                    } else {
                        System.out.println("Vergiss nicht deine Hausaufgabe abzugeben!");
                        time.cancel();
                    }
                }
            };
            Calendar date = Calendar.getInstance();
            date.set(2022, Calendar.NOVEMBER, 02, 23, 59, 50);
            time.scheduleAtFixedRate(hausaufgabenAbgeben, date.getTime(), 1000);
        }
    }

    Nach der hinzugefügten Logik wird der Zähler am 2. November, um 23:59 Uhr und in der 50. Sekunde starten und die hinzugefügte Erinnerung nach zehn Sekunden anzeigen. Wir haben zudem die Java Override Annotation verwendet!

    Ausgabe auf der Konsole:

    Die Java TimerTask Klasse im Überblick

    Das waren alle wesentlichen Informationen zu den Java Timer Aufgaben und der Zeitplanung. Du kannst bei Bedarf gerne weiter recherchieren.

    Zusammenfassung: Java Timer

    Die Objekte der Klasse Java Timer werden verwendet, um verschiedene Aufgaben zu planen, die nach einem bestimmten Zeitraum oder einem bestimmten Datum und einer bestimmten Uhrzeit ausgeführt werden können. Außerdem kannst du die Aufgabe für eine einmalige oder wiederholte Ausführung planen. Die Java Timer-Klasse nutzt die Hintergrund-Threads für die Planung von Aufgaben. In diesem Artikel wurden die Java Timer-Klasse, ihre Konstruktoren, Methoden und ihre Implementierung besprochen.

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Java und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig