2016-08-09 38 views

Antwort

12
  • festverzinslichen: macht Frühling die Aufgabe, auf regelmäßigen Abständen selbst ausgeführt werden, wenn der letzte Aufruf noch sein kann, ausgeführt wird.
  • fixedDelay: Steuert speziell die nächste Ausführungszeit, wenn die letzte Ausführung beendet wird.

    @Scheduled (fixedDelay = 5000) public void updateEmployeeInventory() { System.out.println ("Mitarbeiter Inventar aktualisiert werden, sobald nur der letzte fertig aktualisiert"); /** * fügen Sie Ihre geplanten Auftrag Logik hier */ }

    @Scheduled (= Festsatz 5000) public void updateEmployeeInventory() { System.out.println ("Mitarbeiter Inventar aktualisiert werden Alle 5 Sekunden vom vorherigen Update hat gestarrt, egal ob es fertig ist oder nicht "); /** * fügen Sie Ihre geplanten Auftrag Logik hier */ }

+1

in jeder Methode beginnt, die ich ** Thread.sleep (5000) ** zu Warten 5s verwende, jedoch ich don sehe nicht was anders – Adam

+0

genau das gleiche, ich glaube @ nikhil7610 erklärte das richtig – ottercoder

0

feste Verzögerung: speziell steuert die nächste Ausführungszeit, wenn die letzten Ausführung beendet.

Feste Rate: veranlasst, dass Spring die Aufgabe in regelmäßigen Intervallen ausführt, auch wenn der letzte Aufruf möglicherweise noch ausgeführt wird.

2

"fixedRate": wartet auf X millis vom Anfang der vorherigen Ausführung, bevor die nächste Ausführung gestartet wird. Wenn die aktuelle Ausführung das Intervall 'fixedRate' überschreitet, wird die nächste Ausführung in die Warteschlange gestellt, aber nur die nächste. Es wird nicht mehr Reihe von Warteschlange Hinrichtungen

private static int i = 0; 

@Scheduled(initialDelay=1000, fixedRate=1000) 
public void testScheduling() throws InterruptedException { 
    System.out.println("Started : "+ ++i); 
    Thread.sleep(4000); 
    System.out.println("Finished : "+ i); 
} 

Ausgabe erstellen:
gestartet: 1
Abschluss: 1 // nach 4 Sekunden
gestartet: 2 // sofort w/o für 1 Sekunde warten, wie angegeben in feste Rate
Abschluss: 2 // nach 4 Sekunden
usw.

„fixedDelay“: wartet X Millis von dem Ende einer vorherigen Ausführung vor der nächsten Ausführung beginnt. Unabhängig davon, wie viel Zeit die aktuelle Ausführung in Anspruch nimmt, wird die nächste Ausführung nach dem Hinzufügen des Intervalls "fixedDelay" zur Endzeit der aktuellen Ausführung gestartet. Die nächste Ausführung wird nicht in die Warteschlange gestellt.

private static int i = 0; 

@Scheduled(initialDelay=1000, fixedRate=1000) 
public void testScheduling() throws InterruptedException { 
    System.out.println("Started : "+ ++i); 
    Thread.sleep(4000); 
    System.out.println("Finished : "+ i); 
} 

Output:
gestartet: 1
Abschluss: 1 // nach 4 Sekunden
gestartet: 2 // wartet auf 1 Sekunde festgelegt, wie in fixedDelay
Abschluss: 2 // nach 4 Sekunden
gestartet: 3 // nach 1 Sekunde
und so weiter

4

Festsatz: Es wird verwendet, um die Job-Methode in jeder n Mühle laufen Sekunden. Es ist nicht wichtig, ob der Job seine vorherige Aufgabe bereits beendet hat.

fixedDelay: Es wird verwendet, um die Jobmethode sequenziell mit der angegebenen Wartezeit von n Millisekunden zwischen den Tasks auszuführen.

Wenn „Festsatz“ verwenden: Festsatz geeignet ist, wenn es nicht erwartet, dass die Größe des Speichers und den Faden-Pool zu überschreiten. Wenn die eingehenden Aufgaben nicht schnell beenden, kann es mit „Out of Memory Ausnahme“ end

Wenn „fixedDelay“ verwenden: Wenn jede ausgeführte Aufgabe zueinander relevant ist und sie müssen warten bevor der vorherige beendet ist, ist fixedRate geeignet. Wenn fixedDelay Zeit sorgfältig eingestellt ist, wird es auch den laufenden Threads genug Zeit geben, ihre Aufgaben zu beenden, bevor die neue Aufgabe