Frage

generasacodicetagpre.

Wie kann ich verhindern, dass dieser Spring-Job läuft, wenn die vorherige Routine noch nicht abgeschlossen ist?

War es hilfreich?

Lösung

mit fixedDelay wird der Zeitraum nach dem Abschluss des Jobs gemessen, also keine Sorgen.

Andere Tipps

Standardmäßig verwendet der Feder einen Single-Thread-Executor. So überlappen sich also keine zwei @ geschmissene Aufgaben. Sogar zwei @ geschmissene Methoden in vollständig unabhängigen Klassen überlappen sich nicht einfach, da nur ein einzelner Thread alle @ einplanen Aufgaben ausführt.

Außerdem, wenn Sie den Standard-Executor durch einen Ausleiter von Thread Pool ersetzen, verzögern diese Experten normalerweise die Ausführung einer Taskinstanz, bis die zuvor geplante Instanz abgeschlossen ist. Dies gilt für fixedelay-, fixederval- und cron basierten Zeitplänen. Diese Federkonfiguration erstellt beispielsweise einen scheduledthreadpooledecutor , der ein Threadpool verwendet, jedoch nicht gleichzeitig gleichzeitige Instanzen desselben Zeitplans zulässt, wie Sie möchten, wie Sie möchten:

generasacodicetagpre.

Hier ist das javaDoc für scheduledthreadpooledecutor :: speduleatfixedrate welche gibt an:

Wenn eine Ausführung dieser Aufgabe länger als seine Periode dauert, können anschließende Ausführungen spät starten, sondern nicht gleichzeitig ausgeführt werden.

Hinweis: Diese Funktionalität gilt nicht für @async-Aufgaben . Der Frühling schafft so viele gleichzeitige Instanzen derjenigen (wenn im Pool ausreichende Threads vorhanden sind).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top