Java 9 CompletableFuture API: таймауты, субклассинг, фабричные методы
CompletableFuture (Java 8) представляет будущий результат, который можно завершить явно. Java 9 усилила API.
Поддержка задержек и таймаутов
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Завершает фьючер значением value, если не завершился раньше таймаута.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Исключительно завершает фьючер TimeoutException, если не завершился вовремя.
Улучшенная поддержка наследования
public Executor defaultExecutor()
Возвращает Executor для async-методов без явного executor. Можно переопределить в подклассе для предоставления своего пула потоков (минимум один независимый поток).
public <U> CompletableFuture<U> newIncompleteFuture()
Возвращает новый незавершённый фьючер того же типа. Подклассы должны переопределять для возврата своего типа. По умолчанию — CompletableFuture.
Новые фабричные методы
public static <U> CompletableFuture<U> completedFuture(U value)
Возвращает уже завершённый фьючер со значением.
public static <U> CompletionStage<U> completedStage(U value)
Уже завершённый CompletionStage (только методы интерфейса).
public static <U> CompletionStage<U> failedStage(Throwable ex)
Уже исключительно завершённый CompletionStage с данным исключением.
Эти изменения делают CompletableFuture гибче для таймаутов, наследования и создания предзавершённых стадий.
java
- Шесть ключевых инноваций, ускоряющих производительность криптографического железа
- Построение надёжного Temperature & Sensor API на Raspberry Pi с модулем GY‑91
- Чертеж повышения надежности оборудования: Структурированный 5-шаговый план
- Allegheny Power инвестирует $156 млн в обновление надежности в Западной Вирджинии
- Расширьте функциональность вашего CMMS с надежным API
- Java 9 (JDK 9): ключевые возможности и преимущества
- Java 9 Process API: ключевые улучшения и новые возможности
- Java 9 Stream API Enhancements: takeWhile, dropWhile, iterate, ofNullable
- Java 9: новые методы Optional (stream, ifPresentOrElse, or)
- Java 9 Multi-Resolution Image API: адаптивная графика