Best Practice Umgang mit unterschiedlichen Tasks

Hallo,

ich hab mir ein winziges Tool geschrieben das aus einem "Links File" URLs läd und dann den content der Seite als html läd und speichert.
Anschließend wird das html geparst und ich hole mir die Daten aus den html files die ich mich interessieren und verarbeite diese weiter.

das ganze starte ich mit einem Task/TimerTask der das Ganze alle 10minuten macht.
da ich aber jeweils zum erneuten Durchlauf des Task run einmal das "Links File" aufmache, um Änderungen an den Links mitzubekommen (gibt es neue, wurden welche gelöscht dessen Daten ich nicht mehr brauche) kam mir die Idee in das Link File auch die Timer Zeit mitanzugeben

also:
url: www.meine-url.de/termine - time:5
url: www.andere-url.com/kurse - time:10
usw.

Fragen:

1) wie stellt man es sinnvollerweise an Tasks unterschiedlicher Zeiten auszuführen?
- macht man das überhaupt in einer Ausführung des Tools?
- oder startet man dafür mehrere Instanzen des Tools, einmal für "meine-url", einmal für "andere-url" etc

ich würde halt gerne eig nur das "Links File" anpassen, das Tool nicht neustarten oder weitere Starten/beenden müssen sondern nur eine Datei ändern

2) wenn ich merke das die Abrufzeit eines Tasks nicht mehr passt, "meine-url" würde zukünftig ausreichen es nur noch alle 20min zu holen,
- kann man das bei dem bereits gestarteten Task ändern?
- schießt man den aktiven Task ab und startet mit der neuer Zeit einen neuen?

wäre super wenn ihr ein paar Denkanstöße habt
Vielen Dank

Edit:
würde man das überhupt mit Tasks machen?
ich könnte auch einfach eine while(true) laufen lassen und mir pro request die url, die letzte ausführung (Timestamp) und der nächste Ausführungszeitpunkt (timestamp) merken
zum Start des while durchlaufs das Links File holen mit meinen "gemerkten" Request abgleichen, löschen bzw bearbeiten und dann machen lassen
ggf. mit wait die while etwas einbremsen damit das nicht zu oft passiert
 
Zuletzt bearbeitet:
Grundsätzlich: KISS/YAGNI. Wenn Du keine Notwendigkeit (sprich: Anforderung) für eine Hintergrundausführung hast, spar Dir das.

Beispielsweise könnte Dein Programm ganz einfach ohne Wiederholungen auskommen: beim Start die Linksdatei öffnen, dann ermitteln, welche der Links überhaupt neu abgerufen werden müssen, anschließend die Links abrufen und sich wieder beenden.

Für die Ausführung könntest Du dann einfach einen cron-Job (oder was Dein Betriebssystem halt hergibt) verwenden. -> einfach und schnell umgesetzt, funktioniert stabil -> Thema ereldigt.

Ansonsten kannst Du Dir das Executor-Framework ansehen, interessant in diesem Zusammenhang insbesondere https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
 
danke für die Antwort und die Tipps

Grundsätzlich: KISS/YAGNI. Wenn Du keine Notwendigkeit (sprich: Anforderung) für eine Hintergrundausführung hast, spar Dir das.
danke für den Hinweis
(musste kurz Google fragen, falls es "später" noch jemand interessiert -> https://jaxenter.de/kiss-prinzip-programmierung-komplexitaet-85271 )

Beispielsweise könnte Dein Programm ganz einfach ohne Wiederholungen auskommen: beim Start die Linksdatei öffnen, dann ermitteln, welche der Links überhaupt neu abgerufen werden müssen, anschließend die Links abrufen und sich wieder beenden.

Für die Ausführung könntest Du dann einfach einen cron-Job (oder was Dein Betriebssystem halt hergibt) verwenden. -> einfach und schnell umgesetzt, funktioniert stabil -> Thema ereldigt.
die Idee klingt auch interessant, denke ich mal drüber nach

Ansonsten kannst Du Dir das Executor-Framework ansehen, interessant in diesem Zusammenhang insbesondere https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
stelle ich erstmal zurück, trotzdem schonmal danke für den Link
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben