Ich muss eine Aufgabe planen, die in einem festgelegten Zeitintervall ausgeführt werden soll. Wie kann ich dies mit Unterstützung langer Intervalle tun (zum Beispiel alle 8 Stunden)?
Ich benutze gerade java.util.Timer.scheduleAtFixedRate
. Hat java.util.Timer.scheduleAtFixedRate
lange Zeitintervalle unterstützt?
TimeUnit
sowohl für dasinitialDelay
als auch für das giltperiod
. Wenn Sie alle 24 Stunden laufen, wird die Sommerzeit unterbrochen, wenn Sie die Sommerzeit aktivieren. Mit einemTimeUnit
von können SieDAYS
jedoch keine Feinkörnigkeit angebeninitialDelay
. (Ich denke, die interne ScheduledExecutorService-Implementierung wirdDAYS
sowieso in Nanosekunden konvertiert ).Sie sollten sich Quartz ansehen, ein Java-Framework, das mit EE- und SE-Editionen funktioniert und es ermöglicht, Jobs für die Ausführung einer bestimmten Zeit zu definieren
quelle
Versuchen Sie es auf diese Weise ->
Erstellen Sie zunächst eine Klasse TimeTask, die Ihre Aufgabe ausführt. Sie sieht folgendermaßen aus:
Dann instanziieren Sie in der Hauptklasse die Aufgabe und führen sie regelmäßig ab einem bestimmten Datum aus:
quelle
Verwenden Sie Google Guava
AbstractScheduledService
wie folgt :}}
Wenn Sie über mehr Dienste wie diesen verfügen, ist die Registrierung aller Dienste in ServiceManager sinnvoll, da alle Dienste zusammen gestartet und gestoppt werden können. Lesen Sie hier mehr über ServiceManager.
quelle
Wenn Sie dabei bleiben möchten
java.util.Timer
, können Sie damit in großen Zeitintervallen planen. Sie vergehen einfach in der Zeit, für die Sie fotografieren. Überprüfen Sie die Dokumentation hier .quelle
Diese beiden Klassen können zusammenarbeiten, um eine periodische Aufgabe zu planen:
Geplante Aufgabe
Geplante Aufgabe ausführen
Referenz https://www.mkyong.com/java/how-to-run-a-task-periodically-in-java/
quelle
Wenn Ihre Anwendung bereits das Spring Framework verwendet, ist die Zeitplanung integriert
quelle
Mach jede Sekunde etwas
quelle
Ich benutze die Funktion von Spring Framework. ( Spring-Context- Jar- oder Maven-Abhängigkeit).
ScheduledTask ist meine eigene Schnittstelle mit meiner benutzerdefinierten Methode execute , die ich als geplante Aufgabe aufrufe.
quelle
Haben Sie Spring Scheduler mit Anmerkungen ausprobiert ?
Sie können dies auch mit XML tun.
quelle
Mein Servlet enthält dies als Code, wie dies im Scheduler beibehalten wird, wenn ein Benutzer auf "Akzeptieren" drückt
quelle