- Java 9 教程
- Java 9 - 主页
- Java 9 - 概述
- Java 9 - 环境设置
- Java 9 - 模块系统
- Java 9 - REPL(JShell)
- Java 9 - 改进的 JavaDocs
- Java 9 - 多版本 JAR
- Java 9 - 集合工厂方法
- Java 9 - 私有接口方法
- Java 9 - 流程 API 改进
- Java 9 - 流 API 改进
- 尝试资源改进
- 增强的@Deprecated注释
- 内部类钻石运算符
- 可选的类改进
- Java 9 - 多分辨率图像 API
- CompletableFuture API 改进
- Java 9 - 其他功能
- java9 有用的资源
- Java 9 - 问题与解答
- Java 9 - 快速指南
- Java 9 - 有用的资源
- Java 9 - 讨论
CompletableFuture API 改进
Java 8 中引入了 CompletableFuture 类来表示可以通过显式设置其值和状态来完成的 Future。它可以用作java.util.concurrent.CompletionStage。它支持在 future 完成时触发的依赖函数和操作。在 java 9 CompletableFuture API 中得到了进一步增强。以下是对 API 所做的相关更改。
- 支持延迟和超时。
- 改进了对子类化的支持。
- 添加了新的工厂方法。
支持延迟和超时
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
如果在给定超时之前未以其他方式完成,则此方法将使用给定值完成此 CompletableFuture。
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
如果在给定超时之前未以其他方式完成,则此方法会异常地完成此 CompletableFuture 并引发 TimeoutException。
改进了对子类化的支持
public Executor defaultExecutor()
它返回用于未指定 Executor 的异步方法的默认 Executor。可以在子类中重写此方法以返回 Executor,以至少提供一个独立线程。
public <U> CompletableFuture<U> newIncompleteFuture()
返回由 CompletionStage 方法返回的类型的新的不完整 CompletableFuture。CompletableFuture 类的子类应该重写此方法以返回与此 CompletableFuture 相同的类的实例。默认实现返回 CompletableFuture 类的实例。
新工厂方法
public static <U> CompletableFuture<U> completedFuture(U value)
此工厂方法返回一个新的 CompletableFuture,它已经使用给定值完成。
public static <U> CompletionStage<U> completedStage(U value)
此工厂方法返回一个新的 CompletionStage,它已使用给定值完成,并且仅支持接口 CompletionStage 中存在的那些方法。
public static <U> CompletionStage<U> failedStage(Throwable ex)
此工厂方法返回一个新的 CompletionStage,它已经在给定的异常下异常完成,并且仅支持接口 CompletionStage 中存在的那些方法。