Java 9 verbesserte CompletableFuture-API

Java 9 新特性Neue Funktionen in Java 9

Java 8 führte dieCompletableFuture<T>-Klasse ein, die alsjava.util.concurrent.Future<T>explizit abgeschlossen werden kann (mit gesetztem Wert und Status) oder alsjava.util.concurrent.CompleteStage verwendet werden kann. Unterstützt das Auslösen abhängiger Funktionen und Aktionen, wenn das Future abgeschlossen ist. Java 9 führte einigeCompletableFuture-Verbesserungen ein:

Java 9CompletableFuturehat Verbesserungen vorgenommen:

  • Unterstützung für Verzögerungen und Timeouts
  • Verbesserte Unterstützung für Unterklassenbildung
  • Neue Factory-Methoden

Unterstützung für Verzögerungen und Timeouts

public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)

Intimeout(Einheit injava.util.concurrent.Timeunits units, z. B. MILLISECONDS), bevor dieses CompletableFuture mit dem angegebenen Wert abgeschlossen wird. Geben Sie dieses CompletableFuture zurück.

public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)

Wenn es nicht innerhalb des angegebenen Timeouts abgeschlossen wird, vervollständigen Sie dieses CompletableFuture mit java.util.concurrent.TimeoutException und geben Sie dieses CompletableFuture zurück.

Erweiterte Unterstützung für Unterklassenbildung

Viele Verbesserungen wurden vorgenommen, sodassCompletableFutureeinfacher als Unterklasse abgeleitet werden kann. Zum Beispiel möchten Sie möglicherweise die neuepublic Executor defaultExecutor()Methode anstelle des standardmäßigenexecutor überschreiben。

Eine weitere neue Methode, die die Unterklassenbildung erleichtert, ist:

public <U> CompletableFuture<U> newIncompleteFuture()

Neue Factory-Methoden

Java 8 führte eine<U> CompletableFuture<U> completedFuture(U value)Factory-Methode ein, um ein bereits mit dem angegebenen Wert abgeschlossenesCompletableFuturezurückzugeben. Java 9 ergänzte diese Methode durch eine neue<U> CompletableFuture<U> failedFuture(Throwable ex)die ein mit der angegebenen Ausnahme abgeschlossenesCompletableFuture zurückgeben kann。

Darüber hinaus führte Java 9 das folgende Paar phasenorientierter Factory-Methoden ein, die abgeschlossene oder außergewöhnlich abgeschlossene Completion-Stages zurückgeben:

  • <U> CompletionStage<U> completedStage(U value): Gibt eine neue ... zurück, die mit dem angegebenen Wert abgeschlossen istCompletionStage, und unterstützt nurCompletionStagedie Schnittstellen in
  • <U> CompletionStage<U> failedStage(Throwable ex): Gibt eine neue ... zurück, die mit der angegebenen Ausnahme abgeschlossen istCompletionStage, und unterstützt nurCompletionStagedie Schnittstellen in

Java 9 新特性Neue Funktionen in Java 9

Andere Erweiterungen