Mejorar la Concurrencia en Java: Mejoras Clave en la API CompletableFuture
La clase CompletableFuture se introdujo en Java 8 para representar el Future que puede completarse estableciendo su valor y estado explícitamente. Puede usarse como java.util.concurrent.CompletionStage. Soporta funciones y acciones dependientes que se disparan al completarse el future. En Java 9, la API CompletableFuture se ha mejorado aún más. A continuación se muestran los cambios relevantes hechos a la API.
- Soporte para retrasos y timeouts.
- Mejor soporte para subclases.
- Nuevos métodos de fábrica añadidos.
Soporte para Retrasos y Timeouts
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Este método completa este CompletableFuture con el valor dado si no se completa de otra forma antes del timeout dado.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Este método completa excepcionalmente este CompletableFuture con una TimeoutException si no se completa de otra forma antes del timeout dado.
Mejor Soporte para Subclases
public Executor defaultExecutor()
Devuelve el Executor por defecto usado para métodos async que no especifican un Executor. Este método puede sobrescribirse en subclases para devolver un Executor que proporcione al menos un hilo independiente.
public <U> CompletableFuture<U> newIncompleteFuture()
Devuelve un nuevo CompletableFuture incompleto del tipo que será devuelto por un método CompletionStage. Las subclases de la clase CompletableFuture deberían sobrescribir este método para devolver una instancia de la misma clase que este CompletableFuture. La implementación por defecto devuelve una instancia de la clase CompletableFuture.
Nuevos Métodos de Fábrica
public static <U> CompletableFuture<U> completedFuture(U value)
Este método de fábrica devuelve un nuevo CompletableFuture que ya está completado con el valor dado.
public static <U> CompletionStage<U> completedStage(U value)
Este método de fábrica devuelve un nuevo CompletionStage que ya está completado con el valor dado y soporta solo los métodos presentes en la interfaz CompletionStage.
public static <U> CompletionStage<U> failedStage(Throwable ex)
Este método de fábrica devuelve un nuevo CompletionStage que ya está completado excepcionalmente con la excepción dada y soporta solo los métodos presentes en la interfaz CompletionStage.
Java
- Plan para Mejorar la Confiabilidad de Equipos: Una Hoja de Ruta Estructurada de 5 Pasos
- Allegheny Power Invierte 156 Millones de Dólares en Mejoras de Fiabilidad en Virginia Occidental
- Extiende la Funcionalidad de tu CMMS con Nuestra API Robusta
- Construya una API robusta de temperatura y sensores en Raspberry Pi usando el módulo GY‑91
- Seis innovaciones clave que impulsan el rendimiento del hardware criptográfico
- Java 9 (JDK 9) – Características y Beneficios Clave
- Java 9 API de Procesos: Mejoras Clave y Nuevas Características
- Mejoras en Java 9 Stream API: takeWhile, dropWhile, iterate y ofNullable
- Mejoras en Java 9: Nuevas Características para la Clase Optional
- Java 9 API de Imagen Multiresolución: Simplificar Gráficos Responsivos
- Mejorar la Concurrencia en Java: Mejoras Clave en la API CompletableFuture