Best Practice Umgang mit unterschiedlichen Tasks

JimWiesel

Mitglied
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:

mihe7

Top Contributor
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
 

JimWiesel

Mitglied
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
A Umgang mit jar Allgemeine Java-Themen 3
Jay_030 Guice: Frage im Umgang mit Unit-Tests Allgemeine Java-Themen 4
A Umgang mit null Allgemeine Java-Themen 16
Q Umgang mit Reflection Allgemeine Java-Themen 4
Tarrew OpenAPI Schnittstelle - Mehrere Kunden mit unterschiedlichen Zugriffsrechten Allgemeine Java-Themen 2
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
S Probleme mit unterschiedlichen Java-Versionen (Mac OS X 10.11) Allgemeine Java-Themen 0
Viktim Threads Liste In unterschiedlichen Threads bearbeiten Allgemeine Java-Themen 23
C Deserialisieren von unterschiedlichen Klasseninstanzen Allgemeine Java-Themen 13
Y inhalte aus 2 unterschiedlichen Arrays miteinander vergleichen Allgemeine Java-Themen 12
D Problem mit unterschiedlichen FontMetrics Allgemeine Java-Themen 1
K JNI: Methoden aus unterschiedlichen Threads aufrufen Allgemeine Java-Themen 3
Gossi Threads mit unterschiedlichen Aufgaben in einer Klasse? Allgemeine Java-Themen 9
J Jars in unterschiedlichen Versionen Allgemeine Java-Themen 14
C Kombinationen von ArrayListen mit unterschiedlichen Längen Allgemeine Java-Themen 7
A Unterschiedlicher Objektgebrauch in unterschiedlichen ActionListenern Allgemeine Java-Themen 7
H2SO3- csv Datei mit unterschiedlichen Formatierungen einlesen Allgemeine Java-Themen 15
A Probleme mit der unterschiedlichen Bildschirmeinstellungen Allgemeine Java-Themen 4
S Methoden aus Interfaces mit unterschiedlichen Parametertypen Allgemeine Java-Themen 7
S Swing Tasks die regelmaessig alleine laufen Allgemeine Java-Themen 3
4a61766120617274697374 Hintergrundjobs(tasks) in Java erstellen Allgemeine Java-Themen 3
S ExecutorService.invokeAll -- was passiert wenn einige Tasks schon ausgefuehrt wurden? Allgemeine Java-Themen 2
J Wie die gleichzeitige Ausführung mehrerer Tasks trotz Multithreading verhindern? Allgemeine Java-Themen 2
Daniel_L Mehrfache Ausführung desselben Threads/Tasks verhindern? Allgemeine Java-Themen 4
O Windows-Prozesse/ Tasks überwachen Allgemeine Java-Themen 3
G Tasks auslesen? Allgemeine Java-Themen 7
F Frage wegen Tasks Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben