API CompletableFuture mejorada de Java 9

Java 9 新特性Nuevas características de Java 9

Java 8 introdujoCompletableFuture<T>clase, que puede serjava.util.concurrent.Future<T>completada explícitamente (estableciendo su valor y estado), y también puede ser utilizada comojava.util.concurrent.CompleteStage. Admite funciones y acciones dependientes que se disparan cuando el future se completa. Java 9 introdujo algunasCompletableFuturemejoras:

Java 9CompletableFuturehizo mejoras:

  • Soporte para delays y timeouts
  • Mejora del soporte para subclases
  • Nuevos métodos de fábrica

Soporte para delays y timeouts

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

Entimeout(la unidad, expresada enjava.util.concurrent.Timeunits unitspor ejemplo, MILLISECONDS) antes de completar este CompletableFuture con el value dado. Devuelve este CompletableFuture.

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

Si no se completa dentro del timeout dado, completa este CompletableFuture con java.util.concurrent.TimeoutException y devuelve este CompletableFuture.

Mejora del soporte para subclases

hizo muchas mejoras para queCompletableFuturese pueda heredar más fácilmente. Por ejemplo, quizás quieras sobrescribir el nuevopublic Executor defaultExecutor()método para reemplazar el predeterminadoexecutor。

Otro nuevo método que facilita la subclasificación es:

public <U> CompletableFuture<U> newIncompleteFuture()

Nuevos métodos de fábrica

Java 8 introdujo<U> CompletableFuture<U> completedFuture(U value)un método de fábrica para devolver uno ya completado con el value dadoCompletableFuture. Java 9, con un nuevo<U> CompletableFuture<U> failedFuture(Throwable ex)para complementar este método, puede devolver uno completado con la excepción dadaCompletableFuture。

Además, Java 9 introdujo el siguiente par de métodos de fábrica orientados a stage, que devuelven completion stages completados o completados excepcionalmente:

  • <U> CompletionStage<U> completedStage(U value): devuelve uno nuevo completado con el value especificadoCompletionStage, y solo admiteCompletionStagelas interfaces que contiene.
  • <U> CompletionStage<U> failedStage(Throwable ex): devuelve uno nuevo completado con la excepción especificadaCompletionStage, y solo admiteCompletionStagelas interfaces que contiene.

Java 9 新特性Nuevas características de Java 9

Otras extensiones