Ich bin verwirrt mit dem folgenden
Ich weiß, wenn ich die Methode schedule
aus der Klasse ScheduledThreadPoolExecutor
verwende:
Ich kann später den Wert abrufen
scheduledFuture.get(5, TimeUnit.SECONDS)
oder scheduledFuture.get()
und sollte null sein, da die Aufgabe nur einmal ausgeführt wurde und abgeschlossen ist.
Und null , weil ich mit der Methodenversion shedule's Runnable
und nicht mit der Methodenversion shedule's Callable
arbeite. Es gemäß der API
Bis hier geht es mir gut.
Meine Frage:
Was ist der Zweck von ScheduledFuture
, wenn es von der Methode scheduleWithFixedDelay
(sogar von scheduleAtFixedRate
) abgerufen wird:
Ja, ich weiß, dass beide fixed -Methoden dieselbe Task mehrmals ausführen, bis die ScheduledThreadPoolExecutor's shutdown
-Methode aufgerufen wird (sie muss alle geplanten Tasks anhalten).
Ich habe über Google nach einigen Beispielen gesucht, indem ich ScheduledFuture
verwendet habe, das von scheduleWithFixedDelay
zurückgegeben wurde. Ich habe nur eines mit der Methode cancel gefunden, um eine bestimmte Aufgabe abzubrechen. Aber keiner arbeitet mit get .
Ich weiß nicht, ob ich falsch liege, aber scheint nutzlos die get Methode, wenn wir mit scheduleWithFixedDelay
arbeiten, denn wenn ich später benutze:
Ich dachte, ich sollte den Null-Wert abrufen können, da ich das Argument period
der Methode scheduleWithFixedDelay
verwenden kann. Ich meine : Führen Sie das Runnable-Objekt aus, warten Sie, bis es abgeschlossen ist, und verwenden Sie die Funktion "displanedFuture.get ()", um den Nullwert zu erhalten, der bestätigt, dass der Vorgang abgeschlossen ist Lauffähiges Objekt entsprechend dem period
Wert usw. ....
Erläuterungen und Beispiele sind sehr willkommen
Vielen Dank im Voraus.
ScheduledFuture kann verwendet werden, um Zeit vor der nächsten Ausführung der Aufgabe zu erhalten:
%Vor%druckt
%Vor%Tags und Links java java.util.concurrent