API CompletableFuture améliorée de Java 9

Java 9 新特性Nouveautés de Java 9

Java 8 a introduit la classeCompletableFuture<T>, qui peut êtrejava.util.concurrent.Future<T>explicitement complétée (avec sa valeur et son statut définis), ou peut être utilisée commejava.util.concurrent.CompleteStage. Prend en charge le déclenchement de fonctions et d'actions dépendantes lorsque le future se termine. Java 9 a introduit quelques améliorations deCompletableFuture:

Java 9CompletableFuturea apporté des améliorations :

  • Prise en charge des délais et des timeouts
  • Prise en charge améliorée de la création de sous-classes
  • Nouvelles méthodes de fabrique

Prise en charge des délais et des timeouts

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

En cas detimeout(unité dansjava.util.concurrent.Timeunits units, par ex., MILLISECONDS) avant de compléter ce CompletableFuture avec la valeur donnée. Renvoie ce CompletableFuture.

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

Si ce n'est pas complété dans le délai d'attente donné, complétez ce CompletableFuture avec java.util.concurrent.TimeoutException et renvoyez ce CompletableFuture.

Prise en charge renforcée de la création de sous-classes

De nombreuses améliorations ont été apportées afin queCompletableFuturepuisse être sous-classé plus facilement. Par exemple, vous pourriez vouloir remplacer la nouvelle méthodepublic Executor defaultExecutor()au lieu de l'executor par défaut。

Une autre nouvelle méthode qui facilite la création de sous-classes est :

public <U> CompletableFuture<U> newIncompleteFuture()

Nouvelles méthodes de fabrique

Java 8 a introduit une<U> CompletableFuture<U> completedFuture(U value)méthode de fabrique pour renvoyer un ... qui a déjà été complété avec la valeur donnéeCompletableFuture. Java 9 a enrichi cette méthode avec une nouvelle<U> CompletableFuture<U> failedFuture(Throwable ex)qui peut renvoyer un ... complété avec l'exception donnéeCompletableFuture。

De plus, Java 9 a introduit la paire suivante de méthodes de fabrique orientées sur les étapes, renvoyant des étapes de complétion complétées ou complétées exceptionnellement :

  • <U> CompletionStage<U> completedStage(U value): Renvoie un nouveauCompletionStagecomplété avec la valeur spécifiée, et ne prend en charge que les interfaces dansCompletionStagethe interfaces in
  • <U> CompletionStage<U> failedStage(Throwable ex): Renvoie un nouveauCompletionStagecomplété avec l'exception spécifiée, et ne prend en charge que les interfaces dansCompletionStagethe interfaces in

Java 9 新特性Nouveautés de Java 9

Autres extensions