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)
erfolgenIch habe mit java.util.Timer in verschiedenen Konfigurationen experimentiert, aber ich hatte keinen Erfolg.
Jede Hilfe wäre willkommen.
Danke.
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
Ein eingebauter JDK-Weg ist zu tun, was andere vorgeschlagen haben und zuerst berechnen:
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.
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?
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: Ссылка
Jcrontab ist ein in Java geschriebener Scheduler. Das Projektziel ist die Bereitstellung eines voll funktionsfähigen Zeitplans für Java-Projekte.
Tags und Links java timer task scheduling