CompletableFuture API改进(CompletableFuture API Improvements)
优质
小牛编辑
134浏览
2023-12-01
在Java 8中引入了CompletableFuture类来表示Future,可以通过设置其值和状态明确来完成。 它可以用作java.util.concurrent.CompletionStage。 它支持在未来完成时触发的依赖功能和操作。 在java 9中,CompletableFuture API得到了进一步的增强。 以下是对API进行的相关更改。
- 支持延迟和超时。
- Improved support for subclassing.
- 新工厂方法增加了。
支持延迟和超时
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
如果在给定超时之前没有完成,则此方法使用给定值完成此CompletableFuture。
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
如果在给定的超时之前没有完成,则此方法异常地使用TimeoutException完成此CompletableFuture。
改进了对子类化的支持
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中存在的那些方法。