Hallo zusammen,
ich hätte eine Verständnisfrage zum java.util.Timer / TimerTask. Ich habe eine Programm, dass in Endlosschleife läuft und verschiedene Jobs ausführt.
z.B.: Job 1 --> alle 5 Minuten
Job 2 --> alle 5 Minuten
Job 3 --> all 2 Minuten
[CODE lang="java" title="Beispiel je Job"]TimerTask timerTask = new TimerTask() {
public void run() {
.....
}
};
Timer timer = new Timer();
timer.schedule(timerTask, TimerStartAbstand, loop);[/CODE]
Das funktioniert soweit gut - und die Jobs behindern sich auch nicht gegenseitig. Jeder Job läuft meinem Verständnis nach in einem Thread.
Soweit so gut, so soll es sein.
Nun die Frage:
Job 2 läuft alle 5 Minuten - was ist wenn dieser aber mal 10 Minuten dauert, weil z.B.: einmal am Tag eine größere Datenmenge kommt.
Wird dann Job2 nach 5 Minuten noch einmal ausgeführt - also ein weiterer Thread und Job 2 läuft dann parallel zwei mal?
Oder wird Job2 nicht erneut ausgeführt, weil er ja noch läuft? Läuft dann Job2 10 Minuten, wenn fertig startet er in 5 Minuten wieder....
Ich müsste eben genau das verhindern, dass ein Job doppelt läuft. Sprich von jedem Job darf immer nur eine Instanz laufen.
Ich habe dazu im Netzt nichts passendes gefunden - oder falsch gesucht - oder es nicht verstanden.
Vielen Dank für euere Hilfe.
vg
malt1981
ich hätte eine Verständnisfrage zum java.util.Timer / TimerTask. Ich habe eine Programm, dass in Endlosschleife läuft und verschiedene Jobs ausführt.
z.B.: Job 1 --> alle 5 Minuten
Job 2 --> alle 5 Minuten
Job 3 --> all 2 Minuten
[CODE lang="java" title="Beispiel je Job"]TimerTask timerTask = new TimerTask() {
public void run() {
.....
}
};
Timer timer = new Timer();
timer.schedule(timerTask, TimerStartAbstand, loop);[/CODE]
Das funktioniert soweit gut - und die Jobs behindern sich auch nicht gegenseitig. Jeder Job läuft meinem Verständnis nach in einem Thread.
Soweit so gut, so soll es sein.
Nun die Frage:
Job 2 läuft alle 5 Minuten - was ist wenn dieser aber mal 10 Minuten dauert, weil z.B.: einmal am Tag eine größere Datenmenge kommt.
Wird dann Job2 nach 5 Minuten noch einmal ausgeführt - also ein weiterer Thread und Job 2 läuft dann parallel zwei mal?
Oder wird Job2 nicht erneut ausgeführt, weil er ja noch läuft? Läuft dann Job2 10 Minuten, wenn fertig startet er in 5 Minuten wieder....
Ich müsste eben genau das verhindern, dass ein Job doppelt läuft. Sprich von jedem Job darf immer nur eine Instanz laufen.
Ich habe dazu im Netzt nichts passendes gefunden - oder falsch gesucht - oder es nicht verstanden.
Vielen Dank für euere Hilfe.
vg
malt1981