ICompletionStage 接口

定义

在完成另一个 CompletionStage 时,执行操作或计算值的可能异步计算的阶段。

[Android.Runtime.Register("java/util/concurrent/CompletionStage", "", "Java.Util.Concurrent.ICompletionStageInvoker", ApiSince=24)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface ICompletionStage : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/CompletionStage", "", "Java.Util.Concurrent.ICompletionStageInvoker", ApiSince=24)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type ICompletionStage = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

在完成另一个 CompletionStage 时,执行操作或计算值的可能异步计算的阶段。 阶段在计算终止时完成,但这可能会触发其他依赖阶段。 此接口中定义的功能只采用几个基本形式,这扩展到一组更大的方法来捕获一系列使用样式:

<ul>

<li>阶段执行的计算可以表示为函数、使用者或 Runnable(分别使用名称包括 <em>apply</em、>em<accept>/em< 或 >em<run>/em<>)的方法,具体取决于它是否需要参数和/或产生结果。 例如:

{@code
            stage.thenApply(x -> square(x))
                 .thenAccept(x -> System.out.print(x))
                 .thenRun(() -> System.out.println());}

附加形式(<em>compose</em>)允许从返回完成阶段的函数构造计算管道。

阶段计算的任何参数都是触发阶段计算的结果。

<li>One 阶段的执行可以通过完成单个阶段或两个阶段或两个阶段之一触发。 使用前缀 <em 和>< em>的方法排列单个阶段的依赖关系。 由两个阶段的 em both/em< 完成触发的>那些,可以使用<>相应的命名方法合并</em> 其结果或效果。<> 由 <两>个阶段之一</em> 触发的结果或效果不能保证哪些结果或效果用于依赖阶段的计算。

<阶段之间的 li>依赖关系控制计算的触发,但不保证任何特定的排序。 此外,可以通过以下三种方式之一排列新阶段计算的执行:默认执行、默认异步执行(使用采用阶段的默认异步执行设施的方法<><>)或自定义(通过提供的)。Executor 默认模式和异步模式的执行属性由 CompletionStage 实现指定,而不是此接口。 具有显式执行器参数的方法可能具有任意执行属性,甚至可能不支持并发执行,但以适应异步方式进行处理。

<li>Two 方法形式(#handle handle#whenComplete whenComplete)支持无条件计算,无论触发阶段是正常还是异常完成。 方法 #exceptionally exceptionally 仅当触发阶段完成异常时,才支持计算替换结果,类似于 java catch 关键字。 在所有其他情况下,如果阶段的计算突然终止并出现(未选中)异常或错误,则所有需要完成其完成的依赖阶段也异常完成,并保留 CompletionException 异常作为其原因。 如果阶段依赖于<两>个阶段的 em</em>,并且两个阶段都异常完成,则 CompletionException 可能与其中任一异常相对应。 如果阶段依赖于<>另外两个阶段的两<者之一,>并且其中只有一个阶段是异常完成的,则不保证依赖阶段是正常完成还是异常完成。 对于方法 whenComplete,当提供的操作本身遇到异常时,除非源阶段也异常完成,否则阶段会异常完成,除非源阶段也异常完成,在这种情况下,源阶段的异常完成是优先的,并传播到从属阶段。

</ul>

所有方法都遵循上述触发、执行和异常完成规范(在单个方法规范中不重复)。 此外,尽管用于传递完成结果(即类型 T参数)的方法的参数可能为 null,但为任何其他参数传递 null 值将导致 NullPointerException 引发。

方法形式 #handle handle 是创建延续阶段的最常规方法,无条件地执行给定触发 CompletionStage 的结果和异常(如果有)的计算,并计算任意结果。 方法 #whenComplete whenComplete 类似,但保留触发阶段的结果,而不是计算新阶段的结果。 由于阶段的正常结果可能是 null,因此这两种方法都应具有结构化计算:

{@code (result, exception) -> {
              if (exception == null) {
                // triggering stage completed normally
              } else {
                // triggering stage completed exceptionally
              }
            }}

此接口不定义最初创建、强制完成正常或异常、探测完成状态或结果或等待阶段完成的方法。 CompletionStage 的实现可能会根据需要提供实现此类效果的方法。 方法 #toCompletableFuture 通过提供通用转换类型,实现此接口的不同实现之间的互操作性。

已在 1.8 中添加。

适用于 . 的 java.util.concurrent.CompletionStageJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

属性

名称 说明
Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回 JniObjectReference 包装的 Java 对象实例。

(继承自 IJavaPeerable)

方法

名称 说明
AcceptEither(ICompletionStage, IConsumer)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,将执行相应的结果作为提供操作的参数。

AcceptEitherAsync(ICompletionStage, IConsumer, IExecutor)

返回新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用提供的执行程序执行,并将相应的结果作为提供操作的参数执行。

AcceptEitherAsync(ICompletionStage, IConsumer)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为提供操作的参数。

ApplyToEither(ICompletionStage, IFunction)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用相应的结果作为提供函数的参数执行。

ApplyToEitherAsync(ICompletionStage, IFunction, IExecutor)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用提供的执行器执行,并将相应的结果作为提供函数的参数执行。

ApplyToEitherAsync(ICompletionStage, IFunction)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为提供函数的参数。

Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Exceptionally(IFunction)

返回一个新的 CompletionStage,当此阶段异常完成时,将执行此阶段的异常作为提供的函数的参数。

ExceptionallyAsync(IFunction, IExecutor)

返回一个新的 CompletionStage,当此阶段完成时,使用此阶段的异常作为提供的函数的参数(使用提供的执行器)执行。

ExceptionallyAsync(IFunction)

返回一个新的 CompletionStage,当此阶段完成时,使用此阶段的默认异步执行设施作为提供函数的参数执行此阶段的异常。

ExceptionallyCompose(IFunction)

返回一个新的 CompletionStage,当此阶段完成时,将使用应用于此阶段异常的提供的函数的结果组成。

ExceptionallyComposeAsync(IFunction, IExecutor)

返回一个新的 CompletionStage,当此阶段完成时,将使用提供给此阶段异常的函数的结果(使用提供的执行程序)组合在一起。

ExceptionallyComposeAsync(IFunction)

返回一个新的 CompletionStage,当此阶段完成时,将使用应用于此阶段异常的提供的函数的结果(使用此阶段的默认异步执行工具)组成。

Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
Handle(IBiFunction)

返回一个新的 CompletionStage,当此阶段正常或异常完成时,将执行此阶段的结果和异常作为提供的函数的参数。

HandleAsync(IBiFunction, IExecutor)

返回一个新的 CompletionStage,当此阶段正常完成或异常时,使用提供的执行程序执行,此阶段的结果和异常作为提供的函数的参数。

HandleAsync(IBiFunction)

返回一个新的 CompletionStage,当此阶段正常完成或异常时,使用此阶段的默认异步执行工具执行,此阶段的结果和异常作为提供函数的参数。

RunAfterBoth(ICompletionStage, IRunnable)

返回一个新的 CompletionStage,当此阶段和其他给定阶段都正常完成时,将执行给定的操作。

RunAfterBothAsync(ICompletionStage, IRunnable, IExecutor)

返回一个新的 CompletionStage,当此阶段和其他给定阶段都正常完成时,使用提供的执行程序执行给定的操作。

RunAfterBothAsync(ICompletionStage, IRunnable)

返回一个新的 CompletionStage,当这一阶段和其他给定阶段都正常完成时,使用此阶段的默认异步执行工具执行给定操作。

RunAfterEither(ICompletionStage, IRunnable)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,将执行给定的操作。

RunAfterEitherAsync(ICompletionStage, IRunnable, IExecutor)

返回新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用提供的执行程序执行给定的操作。

RunAfterEitherAsync(ICompletionStage, IRunnable)

返回一个新的 CompletionStage,当此阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行给定操作。

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

在完成另一个 CompletionStage 时,执行操作或计算值的可能异步计算的阶段。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
ThenAccept(IConsumer)

返回一个新的 CompletionStage,当此阶段正常完成时,将执行此阶段的结果作为提供操作的参数。

ThenAcceptAsync(IConsumer, IExecutor)

返回一个新的 CompletionStage,当此阶段正常完成时,使用提供的执行程序执行,此阶段的结果作为提供的操作的参数。

ThenAcceptAsync(IConsumer)

返回一个新的 CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行,此阶段的结果作为提供操作的参数。

ThenAcceptBoth(ICompletionStage, IBiConsumer)

返回一个新的 CompletionStage,当这和另一个给定阶段正常完成时,将执行两个结果作为提供操作的参数。

ThenAcceptBothAsync(ICompletionStage, IBiConsumer, IExecutor)

返回一个新的 CompletionStage,当这一阶段和其他给定阶段都正常完成时,使用提供的执行器执行,并将两个结果作为提供的操作的参数执行。

ThenAcceptBothAsync(ICompletionStage, IBiConsumer)

返回一个新的 CompletionStage,当这一阶段和其他给定阶段都正常完成时,使用此阶段的默认异步执行工具执行,这两个结果作为提供的操作的参数。

ThenApply(IFunction)

返回一个新的 CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为提供的函数的参数来执行。

ThenApplyAsync(IFunction, IExecutor)

返回一个新的 CompletionStage,当此阶段正常完成时,使用提供的执行程序执行,此阶段的结果作为提供的函数的参数。

ThenApplyAsync(IFunction)

返回一个新的 CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行,此阶段的结果作为提供函数的参数。

ThenCombine(ICompletionStage, IBiFunction)

返回一个新的 CompletionStage,当这和另一个给定阶段正常完成时,将执行两个结果作为提供的函数的参数。

ThenCombineAsync(ICompletionStage, IBiFunction, IExecutor)

返回一个新的 CompletionStage,当这一阶段和其他给定阶段正常完成时,使用提供的执行器执行,并将两个结果作为提供的函数的参数执行。

ThenCombineAsync(ICompletionStage, IBiFunction)

返回一个新的 CompletionStage,当这一阶段和其他给定阶段都正常完成时,使用此阶段的默认异步执行工具执行,这两个结果作为提供的函数的参数。

ThenCompose(IFunction)

返回与给定函数返回的 CompletionStage 相同的值完成的新 CompletionStage。

ThenComposeAsync(IFunction, IExecutor)

返回与给定函数返回的 CompletedStage 相同的值(使用提供的执行程序执行)完成的新 CompletionStage。

ThenComposeAsync(IFunction)

返回使用此阶段的默认异步执行工具执行的与给定函数返回的 CompletionStage 相同的值完成的新 CompletionStage。

ThenRun(IRunnable)

返回一个新的 CompletionStage,当此阶段正常完成时,将执行给定的操作。

ThenRunAsync(IRunnable, IExecutor)

返回一个新的 CompletionStage,当此阶段正常完成时,使用提供的执行程序执行给定的操作。

ThenRunAsync(IRunnable)

返回一个新的 CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行给定操作。

ToCompletableFuture()

返回 CompletableFuture 与此阶段相同的完成属性。

UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)
WhenComplete(IBiConsumer)

返回与此阶段相同的结果或异常的新 CompletionStage,该结果或异常在此阶段完成时执行给定操作。

WhenCompleteAsync(IBiConsumer, IExecutor)

返回一个新的 CompletionStage,其结果或异常与此阶段相同,此阶段完成后使用提供的执行程序执行给定操作。

WhenCompleteAsync(IBiConsumer)

返回一个新的 CompletionStage,其结果或异常与此阶段相同,当此阶段完成时,将使用此阶段的默认异步执行工具执行给定操作。

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

在完成另一个 CompletionStage 时,执行操作或计算值的可能异步计算的阶段。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于