CompletableFuture Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
A Future
that may be explicitly completed (setting its
value and status), and may be used as a CompletionStage
,
supporting dependent functions and actions that trigger upon its
completion.
[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
- Inheritance
- Attributes
- Implements
Remarks
A Future
that may be explicitly completed (setting its value and status), and may be used as a CompletionStage
, supporting dependent functions and actions that trigger upon its completion.
When two or more threads attempt to #complete complete
, #completeExceptionally completeExceptionally
, or #cancel cancel
a CompletableFuture, only one of them succeeds.
In addition to these and related methods for directly manipulating status and results, CompletableFuture implements interface CompletionStage
with the following policies: <ul>
<li>Actions supplied for dependent completions of <em>non-async</em> methods may be performed by the thread that completes the current CompletableFuture, or by any other caller of a completion method.
<li>All <em>async</em> methods without an explicit Executor argument are performed using the ForkJoinPool#commonPool()
(unless it does not support a parallelism level of at least two, in which case, a new Thread is created to run each task). To simplify monitoring, debugging, and tracking, all generated asynchronous tasks are instances of the marker interface AsynchronousCompletionTask
. Operations with time-delays can use adapter methods defined in this class, for example: supplyAsync(supplier, delayedExecutor(timeout, timeUnit))
. To support methods with delays and timeouts, this class maintains at most one daemon thread for triggering and cancelling actions, not for running them.
<li>All CompletionStage methods are implemented independently of other public methods, so the behavior of one method is not impacted by overrides of others in subclasses.
</ul>
CompletableFuture also implements Future
with the following policies: <ul>
<li>Since (unlike FutureTask
) this class has no direct control over the computation that causes it to be completed, cancellation is treated as just another form of exceptional completion. Method #cancel cancel
has the same effect as completeExceptionally(new CancellationException())
. Method #isCompletedExceptionally
can be used to determine if a CompletableFuture completed in any exceptional fashion.
<li>In case of exceptional completion with a CompletionException, methods #get()
and #get(long, TimeUnit)
throw an ExecutionException
with the same cause as held in the corresponding CompletionException. To simplify usage in most contexts, this class also defines methods #join()
and #getNow
that instead throw the CompletionException directly in these cases. </ul>
Arguments used to pass a completion result (that is, for parameters of type T
) for methods accepting them may be null, but passing a null value for any other parameter will result in a NullPointerException
being thrown.
Added in 1.8.
Java documentation for java.util.concurrent.CompletableFuture
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Constructors
CompletableFuture() |
Creates a new incomplete CompletableFuture. |
CompletableFuture(IntPtr, JniHandleOwnership) |
Properties
Class |
Returns the runtime class of this |
Handle |
The handle to the underlying Android instance. (Inherited from Object) |
IsCancelled |
Returns |
IsCompletedExceptionally |
Returns |
IsDone |
Returns |
JniIdentityHashCode | (Inherited from Object) |
JniPeerMembers | |
NumberOfDependents |
Returns the estimated number of CompletableFutures whose completions are awaiting completion of this CompletableFuture. |
PeerReference | (Inherited from Object) |
ThresholdClass | |
ThresholdType |
Methods
AcceptEither(ICompletionStage, IConsumer) | |
AcceptEitherAsync(ICompletionStage, IConsumer) | |
AcceptEitherAsync(ICompletionStage, IConsumer, IExecutor) | |
AllOf(CompletableFuture[]) |
Returns a new CompletableFuture that is completed when all of the given CompletableFutures complete. |
AnyOf(CompletableFuture[]) |
Returns a new CompletableFuture that is completed when any of the given CompletableFutures complete, with the same result. |
ApplyToEither(ICompletionStage, IFunction) | |
ApplyToEitherAsync(ICompletionStage, IFunction) | |
ApplyToEitherAsync(ICompletionStage, IFunction, IExecutor) | |
Cancel(Boolean) |
If not already completed, completes this CompletableFuture with
a |
Clone() |
Creates and returns a copy of this object. (Inherited from Object) |
Complete(Object) |
If not already completed, sets the value returned by |
CompleteAsync(ISupplier) |
Completes this CompletableFuture with the result of the given Supplier function invoked from an asynchronous task using the default executor. |
CompleteAsync(ISupplier, IExecutor) |
Completes this CompletableFuture with the result of the given Supplier function invoked from an asynchronous task using the given executor. |
CompletedFuture(Object) |
Returns a new CompletableFuture that is already completed with the given value. |
CompletedStage(Object) |
Returns a new CompletionStage that is already completed with
the given value and supports only those methods in
interface |
CompleteExceptionally(Throwable) |
If not already completed, causes invocations of |
CompleteOnTimeout(Object, Int64, TimeUnit) |
Completes this CompletableFuture with the given value if not otherwise completed before the given timeout. |
Copy() |
Returns a new CompletableFuture that is completed normally with the same value as this CompletableFuture when it completes normally. |
DefaultExecutor() |
Returns the default Executor used for async methods that do not specify an Executor. |
DelayedExecutor(Int64, TimeUnit) |
Returns a new Executor that submits a task to the default executor after the given delay (or no delay if non-positive). |
DelayedExecutor(Int64, TimeUnit, IExecutor) |
Returns a new Executor that submits a task to the given base executor after the given delay (or no delay if non-positive). |
Dispose() | (Inherited from Object) |
Dispose(Boolean) | (Inherited from Object) |
Equals(Object) |
Indicates whether some other object is "equal to" this one. (Inherited from Object) |
Exceptionally(IFunction) |
Returns a new CompletableFuture that is completed when this CompletableFuture completes, with the result of the given function of the exception triggering this CompletableFuture's completion when it completes exceptionally; otherwise, if this CompletableFuture completes normally, then the returned CompletableFuture also completes normally with the same value. |
ExceptionallyAsync(IFunction) | |
ExceptionallyAsync(IFunction, IExecutor) | |
ExceptionallyCompose(IFunction) | |
ExceptionallyComposeAsync(IFunction) | |
ExceptionallyComposeAsync(IFunction, IExecutor) | |
FailedFuture(Throwable) |
Returns a new CompletableFuture that is already completed exceptionally with the given exception. |
FailedStage(Throwable) |
Returns a new CompletionStage that is already completed
exceptionally with the given exception and supports only those
methods in interface |
Get() |
Waits if necessary for this future to complete, and then returns its result. |
Get(Int64, TimeUnit) |
Waits if necessary for at most the given time for this future to complete, and then returns its result, if available. |
GetHashCode() |
Returns a hash code value for the object. (Inherited from Object) |
GetNow(Object) |
Returns the result value (or throws any encountered exception) if completed, else returns the given valueIfAbsent. |
Handle(IBiFunction) | |
HandleAsync(IBiFunction) | |
HandleAsync(IBiFunction, IExecutor) | |
JavaFinalize() |
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. (Inherited from Object) |
Join() |
Returns the result value when complete, or throws an (unchecked) exception if completed exceptionally. |
MinimalCompletionStage() |
Returns a new CompletionStage that is completed normally with
the same value as this CompletableFuture when it completes
normally, and cannot be independently completed or otherwise
used in ways not defined by the methods of interface |
NewIncompleteFuture() |
Returns a new incomplete CompletableFuture of the type to be returned by a CompletionStage method. |
Notify() |
Wakes up a single thread that is waiting on this object's monitor. (Inherited from Object) |
NotifyAll() |
Wakes up all threads that are waiting on this object's monitor. (Inherited from Object) |
ObtrudeException(Throwable) |
Forcibly causes subsequent invocations of method |
ObtrudeValue(Object) |
Forcibly sets or resets the value subsequently returned by
method |
OrTimeout(Int64, TimeUnit) |
Exceptionally completes this CompletableFuture with
a |
RunAfterBoth(ICompletionStage, IRunnable) | |
RunAfterBothAsync(ICompletionStage, IRunnable) | |
RunAfterBothAsync(ICompletionStage, IRunnable, IExecutor) | |
RunAfterEither(ICompletionStage, IRunnable) | |
RunAfterEitherAsync(ICompletionStage, IRunnable) | |
RunAfterEitherAsync(ICompletionStage, IRunnable, IExecutor) | |
RunAsync(IRunnable) |
Returns a new CompletableFuture that is asynchronously completed
by a task running in the |
RunAsync(IRunnable, IExecutor) |
Returns a new CompletableFuture that is asynchronously completed by a task running in the given executor after it runs the given action. |
SetHandle(IntPtr, JniHandleOwnership) |
Sets the Handle property. (Inherited from Object) |
SupplyAsync(ISupplier) |
Returns a new CompletableFuture that is asynchronously completed
by a task running in the |
SupplyAsync(ISupplier, IExecutor) |
Returns a new CompletableFuture that is asynchronously completed by a task running in the given executor with the value obtained by calling the given Supplier. |
ThenAccept(IConsumer) | |
ThenAcceptAsync(IConsumer) | |
ThenAcceptAsync(IConsumer, IExecutor) | |
ThenAcceptBoth(ICompletionStage, IBiConsumer) | |
ThenAcceptBothAsync(ICompletionStage, IBiConsumer) | |
ThenAcceptBothAsync(ICompletionStage, IBiConsumer, IExecutor) | |
ThenApply(IFunction) | |
ThenApplyAsync(IFunction) | |
ThenApplyAsync(IFunction, IExecutor) | |
ThenCombine(ICompletionStage, IBiFunction) | |
ThenCombineAsync(ICompletionStage, IBiFunction) | |
ThenCombineAsync(ICompletionStage, IBiFunction, IExecutor) | |
ThenCompose(IFunction) | |
ThenComposeAsync(IFunction) | |
ThenComposeAsync(IFunction, IExecutor) | |
ThenRun(IRunnable) | |
ThenRunAsync(IRunnable) | |
ThenRunAsync(IRunnable, IExecutor) | |
ToArray<T>() | (Inherited from Object) |
ToCompletableFuture() |
Returns this CompletableFuture. |
ToString() |
Returns a string representation of the object. (Inherited from Object) |
UnregisterFromRuntime() | (Inherited from Object) |
Wait() |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>. (Inherited from Object) |
Wait(Int64) |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed. (Inherited from Object) |
Wait(Int64, Int32) |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed. (Inherited from Object) |
WhenComplete(IBiConsumer) | |
WhenCompleteAsync(IBiConsumer) | |
WhenCompleteAsync(IBiConsumer, IExecutor) |
Explicit Interface Implementations
IJavaPeerable.Disposed() | (Inherited from Object) |
IJavaPeerable.DisposeUnlessReferenced() | (Inherited from Object) |
IJavaPeerable.Finalized() | (Inherited from Object) |
IJavaPeerable.JniManagedPeerState | (Inherited from Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) | (Inherited from Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) | (Inherited from Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) | (Inherited from Object) |
Extension Methods
JavaCast<TResult>(IJavaObject) |
Performs an Android runtime-checked type conversion. |
JavaCast<TResult>(IJavaObject) | |
GetJniTypeName(IJavaPeerable) | |
GetAsync(IFuture) | |
GetAsync(IFuture, Int64, TimeUnit) |