Java 9: Aprimoramentos na API CompletableFuture para Concorrência
A classe CompletableFuture foi introduzida no Java 8 para representar um Future que pode ser completado definindo seu valor e status explicitamente. Pode ser usada como java.util.concurrent.CompletionStage. Suporta funções e ações dependentes disparadas na conclusão do future. No Java 9, a API CompletableFuture foi aprimorada. Mudanças relevantes:
- Suporte a atrasos e timeouts.
- Suporte melhorado para subclassing.
- Novos métodos de fábrica adicionados.
Suporte a Atrasos e Timeouts
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Completa este CompletableFuture com o valor dado se não for completado antes do timeout.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Completa excepcionalmente este CompletableFuture com TimeoutException se não for completado antes do timeout.
Suporte Melhorado para Subclassing
public Executor defaultExecutor()
Retorna o Executor padrão usado para métodos assíncronos que não especificam Executor. Pode ser sobrescrito em subclasses para retornar um Executor que forneça thread independente mínima.
public <U> CompletableFuture<U> newIncompleteFuture()
Retorna novo CompletableFuture incompleto do tipo a ser retornado por método CompletionStage. Subclasses devem sobrescrever para retornar instância da mesma classe. Implementação padrão retorna instância de CompletableFuture.
Novos Métodos de Fábrica
public static <U> CompletableFuture<U> completedFuture(U value)
Retorna novo CompletableFuture já completado com o valor dado.
public static <U> CompletionStage<U> completedStage(U value)
Retorna novo CompletionStage já completado com o valor dado, suportando apenas métodos da interface CompletionStage.
public static <U> CompletionStage<U> failedStage(Throwable ex)
Retorna novo CompletionStage já completado excepcionalmente com a exceção dada, suportando apenas métodos da interface CompletionStage.
Esses aprimoramentos tornam CompletableFuture mais flexível para programação assíncrona robusta.
Java
- Seis Inovações-Chave Impulsionando o Desempenho de Hardware Criptográfico
- Construa API Robusta de Temperatura e Sensores no Raspberry Pi com Módulo GY‑91
- Blueprint para Aumentar Confiabilidade de Equipamentos: Plano Estruturado de 5 Passos
- Allegheny Power Investe US$ 156 Mi em Melhorias de Confiabilidade na Virgínia Ocidental
- Estenda a Funcionalidade do seu CMMS com Nossa API Robusta
- Java 9 (JDK 9) – Principais Recursos e Benefícios
- Java 9 Process API: Principais Melhorias e Novos Recursos
- Java 9 Stream API Enhancements: takeWhile, dropWhile, iterate e ofNullable
- Java 9: Novos Recursos para a Classe Optional
- Java 9 Multi-Resolution Image API: Simplifique Gráficos Responsivos