Java - Eine tägliche Aufgabe planen

7

Ich suche nach einer effektiven Methode, um jeden Tag um 15 Uhr eine Methode auszuführen, unabhängig davon, wann die Anwendung anfänglich ausgeführt wurde oder wie lange sie schon ausgeführt wurde.

Dies muss vollständig von der Anwendung ohne OS-Eingriff (zB Windows Task Scheduler)

erfolgen

Ich habe mit java.util.Timer in verschiedenen Konfigurationen experimentiert, aber ich hatte keinen Erfolg.

Jede Hilfe wäre willkommen.

Danke.

    
user98971 30.04.2009, 21:27
quelle

6 Antworten

16

Sie sollten sich Quartz ansehen, ein Java-basiertes Job-Scheduling-System.

    
Mark 30.04.2009, 21:31
quelle
2

Sie werden wahrscheinlich etwas wie die Quarz-Engine verwenden wollen, die Dinge ausführen kann, die Sie verpasst haben (wie während eines ähem Absturz) und es ist nicht nötig, Threads zu verwalten.

Wenn Sie zum Beispiel Threads verwenden und sie in den Ruhezustand versetzen und 86400 Sekunden (einen Tag) später aufwachen, werden Sie aufwachen und eine Stunde zu spät (Tag = 82800 Sekunden) oder früh (Tag = 90000 Sekunden) zum Sommerzeitwechsel Tag, sei also vorsichtig mit der Lösung, die du wählst

    
pfranza 30.04.2009 21:39
quelle
2

Ein eingebauter JDK-Weg ist zu tun, was andere vorgeschlagen haben und zuerst berechnen:

  • currentTime - gewünschteZeit

Dann können Sie etwas wie einen Zeitplan-Executor verwenden um die Aufgaben zu übermitteln und sie mit einer bestimmten Verzögerung auszuführen. Dies ist viel einfacher als die Optionen, die Sie mit Frameworks wie Quarz haben, erfordert aber keine externe Abhängigkeit.

Sie sollten auch immer angeben, welches JDK Sie verwenden, damit die Leute Lösungen für Ihre Version des JDK bereitstellen können.

    
Matt Reynolds 30.04.2009 22:16
quelle
1

Sie können einen Thread starten, der den Unterschied zu den nächsten 15 Uhr berechnet und für diese Zeit schläft. Wenn es aufwacht, führt es die Methode aus und berechnet und schläft. Ist das was du meintest?

    
Norbert Hartl 30.04.2009 21:32
quelle
1

Wie von anderen angegeben, ist Quartz eine Option, mit der Sie cronartige Operationen, Jobs oder Trigger ausführen können. Hier ist ein Link zu diesem Thema: Ссылка

    
Alberto Zaccagni 30.04.2009 21:55
quelle
1

Jcrontab

  

Jcrontab ist ein in Java geschriebener Scheduler. Das Projektziel ist die Bereitstellung eines voll funktionsfähigen Zeitplans für Java-Projekte.

    
Stu Thompson 01.05.2009 06:15
quelle

Tags und Links