Java-Bibliothek mit der Klasse zu behandeln, geplante Ausführung von "callbacks"?

Mein Programm hat eine Komponente - genannt der Planer - das können andere Komponenten registrieren, Punkte in der Zeit in der Sie wieder aufgerufen werden. Sollte dies funktionieren ähnlich wie das Unix-cron-Dienst, ich. e. Sie sagen, der Scheduler "Benachrichtigen Sie mich um zehn Minuten nach jeder vollen Stunde".

Ich weiß, es gibt keine echten Rückrufe in Java.

Hier ist mein Ansatz, gibt es eine Bibliothek, die bereits wirkt dieses Zeug? Fühlen Sie sich frei, Vorschläge zur Verbesserung, auch.

Registrieren Aufruf Scheduler übergibt:

  • eine Zeitangabe mit Stunden -, Minuten -, Sekunde, Jahr, Monat, dom, dow, wo jeder Punkt kann nicht spezifiziert, was "führen Sie jede Stunde /minute." (genau wie crontabs)
  • ein Objekt, das Daten enthält, die einem sagen, das aufrufende Objekt, was zu tun ist, wenn es mitgeteilt wird, durch den Scheduler. Der Scheduler nicht verarbeiten diese Daten, speichert Sie und gibt Sie zurück nach Benachrichtigung.
  • eine Referenz auf das aufrufende Objekt

Beim Start, oder nach einer neuen Registrierung verlangen, beginnt der Scheduler mit einem Calendar-Objekt des aktuellen system-Zeit und prüft, ob es irgendwelche Einträge in der Datenbank, passend zu diesem Punkt in der Zeit. Wenn Sie dort sind, werden Sie ausgeführt, und der Prozess beginnt von vorn. Wenn es nicht, die Zeit in der Kalender-Objekt um eins inkrementiert zweite und die entreis werden erneut geprüft. Dies wird wiederholt, bis es einen Eintrag (oder mehr) match(es). (Discrete Event Simulation)

Der Scheduler wird dann merken, dass die timestamp -, sleep-und wake jede Sekunde zu überprüfen, ob es schon da ist. Wenn es geschieht, zu wecken und die Zeit, die bereits vergangen ist, fängt es immer, ebenso, wenn die Zeit gekommen ist, und die Aufträge wurden ausgeführt.


Bearbeiten: Danke für den Hinweis mich an Quartz. Ich bin auf der Suche nach etwas viel kleineres, aber.

InformationsquelleAutor Hanno Fietz | 2009-03-05
Schreibe einen Kommentar