CompletableFuture 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
Future一个可以显式完成(设置其值和状态),并可用作CompletionStage支持在其完成时触发的依赖函数和操作。
[Android.Runtime.Register("java/util/concurrent/CompletableFuture", ApiSince=24, DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public class CompletableFuture : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.ICompletionStage, Java.Util.Concurrent.IFuture
[<Android.Runtime.Register("java/util/concurrent/CompletableFuture", ApiSince=24, DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type CompletableFuture = class
inherit Object
interface ICompletionStage
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IFuture
- 继承
- 属性
- 实现
注解
Future一个可以显式完成(设置其值和状态),并可用作CompletionStage支持在其完成时触发的依赖函数和操作。
当两个或多个线程尝试#complete complete或#completeExceptionally completeExceptionally#cancel cancel一个 CompletableFuture 时,其中只有一个成功。
除了用于直接操作状态和结果的这些和相关方法外,CompletableFuture 还使用以下策略实现接口CompletionStage: <>
<为 em 非异步/em> 方法的<>依赖完成提供的 li>Actions 可由完成当前 CompletedableFuture 的线程或完成方法的任何其他调用方<执行。
<
>li all <em>async</em> methods without an explicit Executor argument is using the ForkJoinPool#commonPool() (除非它不支持至少两个并行度级别,在这种情况下,将创建一个新的 Thread 来运行每个任务)。 为了简化监视、调试和跟踪,所有生成的异步任务都是标记接口 AsynchronousCompletionTask的实例。 具有时间延迟的操作可以使用此类中定义的适配器方法,例如: supplyAsync(supplier, delayedExecutor(timeout, timeUnit)) 为了支持延迟和超时的方法,此类最多维护一个守护程序线程来触发和取消操作,而不是运行它们。
<li>All CompletionStage 方法独立于其他公共方法实现,因此一种方法的行为不受子类中其他方法的重写的影响。
</ul>
CompletableFuture 还使用以下策略实现 Future : <ul>
<li>由于(不像 FutureTask)此类无法直接控制导致计算完成的计算,因此取消被视为另一种异常完成形式。 方法 #cancel cancel 的效果与 completeExceptionally(new CancellationException()). 方法 #isCompletedExceptionally 可用于确定 CompletedableFuture 是否以任何异常方式完成。
<li>如果使用 CompletionException 异常完成,方法和#get()#get(long, TimeUnit)引发ExecutionException与相应 CompletionException 中保留的相同原因。 为了简化大多数上下文中的用法,此类还定义了方法 #join() ,并 #getNow 直接在这些情况下引发 CompletionException。
</ul>
用于传递完成结果(即类型 T参数)的方法的参数可能为 null,但为任何其他参数传递 null 值将导致 NullPointerException 引发。
已在 1.8 中添加。
适用于 . 的 java.util.concurrent.CompletableFutureJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| 名称 | 说明 |
|---|---|
| CompletableFuture() |
创建新的不完整的 CompletableFuture。 |
| CompletableFuture(IntPtr, JniHandleOwnership) |
|
属性
| 名称 | 说明 |
|---|---|
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| IsCancelled |
返回 |
| IsCompletedExceptionally |
|
| IsDone |
如果以任何方式完成,则返回 |
| JniIdentityHashCode |
|
| JniPeerMembers |
|
| NumberOfDependents |
返回正在等待此 CompletableFuture 完成的 CompletableFuture 的估计数量。 |
| PeerReference |
|
| ThresholdClass |
|
| ThresholdType |
|
方法
| 名称 | 说明 |
|---|---|
| AcceptEither(ICompletionStage, IConsumer) |
|
| AcceptEitherAsync(ICompletionStage, IConsumer, IExecutor) |
|
| AcceptEitherAsync(ICompletionStage, IConsumer) |
|
| AllOf(CompletableFuture[]) |
返回一个新的 CompleteableFuture,当所有给定的 CompleteableFutures 完成时完成。 |
| AnyOf(CompletableFuture[]) |
返回一个新的 CompleteableFuture,当任何给定的 CompleteableFutures 完成时完成,结果相同。 |
| ApplyToEither(ICompletionStage, IFunction) |
|
| ApplyToEitherAsync(ICompletionStage, IFunction, IExecutor) |
|
| ApplyToEitherAsync(ICompletionStage, IFunction) |
|
| Cancel(Boolean) |
如果尚未完成,请使用 a. |
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| Complete(Object) |
如果尚未完成,将由 |
| CompleteAsync(ISupplier, IExecutor) |
使用给定的执行程序从异步任务调用的给定供应商函数的结果完成此 CompleteableFuture。 |
| CompleteAsync(ISupplier) |
使用默认执行程序从异步任务调用的给定供应商函数的结果完成此 CompleteableFuture。 |
| CompletedFuture(Object) |
返回已使用给定值完成的新 CompletedableFuture。 |
| CompletedStage(Object) |
返回已使用给定值完成的新 CompletionStage,并且仅支持接口 |
| CompleteExceptionally(Throwable) |
如果尚未完成,会导致调用 |
| CompleteOnTimeout(Object, Int64, TimeUnit) |
如果给定超时之前未完成,请使用给定值完成此 CompleteableFuture。 |
| Copy() |
返回一个新的 CompleteableFuture,该函数在正常完成时通常使用与此 CompleteableFuture 相同的值完成。 |
| DefaultExecutor() |
返回用于未指定执行程序异步方法的默认执行程序。 |
| DelayedExecutor(Int64, TimeUnit, IExecutor) |
返回一个新的执行程序,该执行程序在给定延迟后将任务提交到给定的基础执行程序(如果未为正)或无延迟。 |
| DelayedExecutor(Int64, TimeUnit) |
返回一个新的执行程序,该执行程序在给定的延迟后将任务提交到默认执行程序(如果非正时不延迟)。 |
| Dispose() |
|
| Dispose(Boolean) |
|
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| Exceptionally(IFunction) |
返回一个新的 CompleteableFuture,当此 CompleteableFuture 完成时已完成,异常的给定函数的结果在异常完成时触发此 CompleteableFuture 完成;否则,如果此 CompleteableFuture 正常完成,则返回的 CompleteableFuture 也以相同的值正常完成。 |
| ExceptionallyAsync(IFunction, IExecutor) |
|
| ExceptionallyAsync(IFunction) |
|
| ExceptionallyCompose(IFunction) |
|
| ExceptionallyComposeAsync(IFunction, IExecutor) |
|
| ExceptionallyComposeAsync(IFunction) |
|
| ExceptionNow() |
|
| FailedFuture(Throwable) |
返回一个新的 CompletedableFuture,该函数已在给定异常的情况下完成。 |
| FailedStage(Throwable) |
返回一个新的 CompletionStage,它已以给定的异常异常完成,并且仅支持接口 |
| Get() |
根据需要等待此未来完成,然后返回其结果。 |
| Get(Int64, TimeUnit) |
如有必要,请等待此未来完成的最多给定时间,然后返回其结果(如果可用)。 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| GetNow(Object) |
如果已完成,则返回结果值(或引发任何遇到的异常),否则返回给定 valueIfAbsent。 |
| Handle(IBiFunction) |
|
| HandleAsync(IBiFunction, IExecutor) |
|
| HandleAsync(IBiFunction) |
|
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Join() |
返回完成时的结果值,或者在异常完成时引发(未选中)异常。 |
| MinimalCompletionStage() |
返回一个新的 CompletionStage,在正常完成时通常以与此 CompleteableFuture 相同的值完成,并且不能以接口方法 |
| NewIncompleteFuture() |
返回要由 CompletionStage 方法返回的类型的新不完整的 CompletableFuture。 |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| ObtrudeException(Throwable) |
强制导致后续调用方法和 |
| ObtrudeValue(Object) |
强制设置或重置方法 |
| OrTimeout(Int64, TimeUnit) |
异常地完成此 CompleteableFuture( |
| ResultNow() |
|
| RunAfterBoth(ICompletionStage, IRunnable) |
|
| RunAfterBothAsync(ICompletionStage, IRunnable, IExecutor) |
|
| RunAfterBothAsync(ICompletionStage, IRunnable) |
|
| RunAfterEither(ICompletionStage, IRunnable) |
|
| RunAfterEitherAsync(ICompletionStage, IRunnable, IExecutor) |
|
| RunAfterEitherAsync(ICompletionStage, IRunnable) |
|
| RunAsync(IRunnable, IExecutor) |
返回一个新的 CompletedableFuture,该任务在运行给定操作后由给定执行器中运行的任务异步完成。 |
| RunAsync(IRunnable) |
返回由运行给定操作后运行 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| State() |
|
| SupplyAsync(ISupplier, IExecutor) |
返回一个新的 CompletedableFuture,该函数由在给定执行器中运行的任务异步完成,该任务通过调用给定供应商获取的值。 |
| SupplyAsync(ISupplier) |
返回一个新的 CompletedableFuture,该函数由运行的任务异步完成, |
| ThenAccept(IConsumer) |
|
| ThenAcceptAsync(IConsumer, IExecutor) |
|
| ThenAcceptAsync(IConsumer) |
|
| ThenAcceptBoth(ICompletionStage, IBiConsumer) |
|
| ThenAcceptBothAsync(ICompletionStage, IBiConsumer, IExecutor) |
|
| ThenAcceptBothAsync(ICompletionStage, IBiConsumer) |
|
| ThenApply(IFunction) |
|
| ThenApplyAsync(IFunction, IExecutor) |
|
| ThenApplyAsync(IFunction) |
|
| ThenCombine(ICompletionStage, IBiFunction) |
|
| ThenCombineAsync(ICompletionStage, IBiFunction, IExecutor) |
|
| ThenCombineAsync(ICompletionStage, IBiFunction) |
|
| ThenCompose(IFunction) |
|
| ThenComposeAsync(IFunction, IExecutor) |
|
| ThenComposeAsync(IFunction) |
|
| ThenRun(IRunnable) |
|
| ThenRunAsync(IRunnable, IExecutor) |
|
| ThenRunAsync(IRunnable) |
|
| ToArray<T>() |
|
| ToCompletableFuture() |
返回此 CompletableFuture。 |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
|
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| WhenComplete(IBiConsumer) |
|
| WhenCompleteAsync(IBiConsumer, IExecutor) |
|
| WhenCompleteAsync(IBiConsumer) |
|
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.DisposeUnlessReferenced() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniManagedPeerState |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
扩展方法
| 名称 | 说明 |
|---|---|
| GetAsync(IFuture, Int64, TimeUnit) |
|
| GetAsync(IFuture) |
|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |