Tasks

public final class Tasks

Task utility methods.

Summary

Public methods

static TResult
<TResult> await(@NonNull Task<TResult> task)

Blocks until the specified Task is complete.

static TResult
<TResult> await(
    @NonNull Task<TResult> task,
    long timeout,
    @NonNull TimeUnit unit
)

Blocks until the specified Task is complete.

static @NonNull Task<TResult>
<TResult> call(@NonNull Callable<TResult> callable)

This method is deprecated.

Use TaskCompletionSource instead, which allows the caller to manage their own Executor.

static @NonNull Task<TResult>
<TResult> call(
    @NonNull Executor executor,
    @NonNull Callable<TResult> callable
)

This method is deprecated.

Use TaskCompletionSource instead, which allows the caller to manage their own Executor.

static @NonNull Task<TResult>
<TResult> forCanceled()

Returns a canceled Task.

static @NonNull Task<TResult>

Returns a completed Task with the specified exception.

static @NonNull Task<TResult>
<TResult> forResult(TResult result)

Returns a completed Task with the specified result.

static @NonNull Task<Void>
whenAll(@Nullable Task[] tasks)

Returns a Task that completes successfully when all of the specified Tasks complete successfully.

static @NonNull Task<Void>

Returns a Task that completes successfully when all of the specified Tasks complete successfully.

static @NonNull Task<List<Task<Object>>>
whenAllComplete(@Nullable Task[] tasks)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete.

static @NonNull Task<List<Task<Object>>>

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete.

static @NonNull Task<List<Task<Object>>>
whenAllComplete(Executor executor, @Nullable Task[] tasks)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete.

static @NonNull Task<List<Task<Object>>>
whenAllComplete(
    Executor executor,
    @Nullable Collection<Task<Object>> tasks
)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete.

static @NonNull Task<List<TResult>>
<TResult> whenAllSuccess(@Nullable Task[] tasks)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully.

static @NonNull Task<List<TResult>>

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully.

static @NonNull Task<List<TResult>>
<TResult> whenAllSuccess(Executor executor, @Nullable Task[] tasks)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully.

static @NonNull Task<List<TResult>>
<TResult> whenAllSuccess(
    Executor executor,
    @Nullable Collection<Task<Object>> tasks
)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully.

static Task<T>
<T> withTimeout(@NonNull Task<T> task, long timeout, @NonNull TimeUnit unit)

Returns a new Task which will return a TimeoutException if a result is not returned within the specified time period.

Public methods

await

public static TResult <TResult> await(@NonNull Task<TResult> task)

Blocks until the specified Task is complete.

Returns
TResult

the Task's result

Throws
java.util.concurrent.ExecutionException

if the Task fails. getCause will return the original exception.

java.lang.InterruptedException

if an interrupt occurs while waiting for the Task to complete

await

public static TResult <TResult> await(
    @NonNull Task<TResult> task,
    long timeout,
    @NonNull TimeUnit unit
)

Blocks until the specified Task is complete.

Returns
TResult

the Task's result

Throws
java.util.concurrent.ExecutionException

if the Task fails. getCause will return the original exception.

java.lang.InterruptedException

if an interrupt occurs while waiting for the Task to complete

java.util.concurrent.TimeoutException

if the specified timeout is reached before the Task completes

call

public static @NonNull Task<TResult> <TResult> call(@NonNull Callable<TResult> callable)

Returns a Task that will be completed with the result of the specified Callable.

If a non-Exception throwable is thrown in the callable, the Task will be failed with a RuntimeException whose cause is the original throwable.

The Callable will be called on the main application thread.

call

public static @NonNull Task<TResult> <TResult> call(
    @NonNull Executor executor,
    @NonNull Callable<TResult> callable
)

Returns a Task that will be completed with the result of the specified Callable.

If a non-Exception throwable is thrown in the callable, the Task will be failed with a RuntimeException whose cause is the original throwable.

Parameters
@NonNull Executor executor

the Executor to use to call the Callable

forCanceled

public static @NonNull Task<TResult> <TResult> forCanceled()

Returns a canceled Task.

forException

public static @NonNull Task<TResult> <TResult> forException(@NonNull Exception e)

Returns a completed Task with the specified exception.

forResult

public static @NonNull Task<TResult> <TResult> forResult(TResult result)

Returns a completed Task with the specified result.

whenAll

public static @NonNull Task<VoidwhenAll(@Nullable Task[] tasks)

Returns a Task that completes successfully when all of the specified Tasks complete successfully. Does not accept nulls.

This Task would fail if any of the provided Tasks fail. This Task would be set to canceled if any of the provided Tasks is canceled and no failure is detected.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAll

public static @NonNull Task<VoidwhenAll(@Nullable Collection<Task<Object>> tasks)

Returns a Task that completes successfully when all of the specified Tasks complete successfully. Does not accept nulls.

The returned Task would fail if any of the provided Tasks fail. The returned Task would be set to canceled if any of the provided Tasks is canceled and no failure is detected.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllComplete

public static @NonNull Task<List<Task<Object>>> whenAllComplete(@Nullable Task[] tasks)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete. This Task would always succeed even if any of the provided Tasks fail or canceled. Does not accept nulls.

This method execute tasks on the main thread, and can cause stuttering or delay when the main thread is busy. Consider migrating to whenAllComplete where an executor can be specified to use a background thread.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllComplete

public static @NonNull Task<List<Task<Object>>> whenAllComplete(@Nullable Collection<Task<Object>> tasks)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete. This Task would always succeed even if any of the provided Tasks fail or canceled. Does not accept nulls.

This method execute tasks on the main thread, and can cause stuttering or delay when the main thread is busy. Consider migrating to whenAllComplete where an executor can be specified to use a background thread.

Throws
java.lang.NullPointerException

if any of the provided

Tasks are null

whenAllComplete

public static @NonNull Task<List<Task<Object>>> whenAllComplete(Executor executor, @Nullable Task[] tasks)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete. This Task would always succeed even if any of the provided Tasks fail or canceled. Does not accept nulls.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllComplete

public static @NonNull Task<List<Task<Object>>> whenAllComplete(
    Executor executor,
    @Nullable Collection<Task<Object>> tasks
)

Returns a Task with a list of Tasks that completes successfully when all of the specified Tasks complete. This Task would always succeed even if any of the provided Tasks fail or canceled. Does not accept nulls.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllSuccess

public static @NonNull Task<List<TResult>> <TResult> whenAllSuccess(@Nullable Task[] tasks)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully. This Task would fail if any of the provided Tasks fail. Does not accept nulls.

This Task would be set to canceled if any of the provided Tasks is canceled and no failure is detected.

This method execute tasks on the main thread, and can cause stuttering or delay when the main thread is busy. Consider migrating to whenAllSuccess where an executor can be specified to use a background thread.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllSuccess

public static @NonNull Task<List<TResult>> <TResult> whenAllSuccess(@Nullable Collection<Task<Object>> tasks)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully. This Task would fail if any of the provided Tasks fail. Does not accept nulls.

This Task would be set to canceled if any of the provided Tasks is canceled and no failure is detected.

This method execute tasks on the main thread, and can cause stuttering or delay when the main thread is busy. Consider migrating to whenAllSuccess where an executor can be specified to use a background thread.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllSuccess

public static @NonNull Task<List<TResult>> <TResult> whenAllSuccess(Executor executor, @Nullable Task[] tasks)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully. This Task would fail if any of the provided Tasks fail. Does not accept nulls.

This Task would be set to canceled if any of the provided Tasks is canceled and no failure is detected.

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

whenAllSuccess

public static @NonNull Task<List<TResult>> <TResult> whenAllSuccess(
    Executor executor,
    @Nullable Collection<Task<Object>> tasks
)

Returns a Task with a list of Task results that completes successfully when all of the specified Tasks complete successfully. This Task would fail if any of the provided Tasks fail. Does not accept nulls.

This Task would be set to canceled if any of the provided Tasks is canceled and no failure is detected.

Parameters
Executor executor

the Executor to use to run the Continuation

Throws
java.lang.NullPointerException

if any of the provided Tasks are null

withTimeout

public static Task<T> <T> withTimeout(@NonNull Task<T> task, long timeout, @NonNull TimeUnit unit)

Returns a new Task which will return a TimeoutException if a result is not returned within the specified time period.

Returns
Task<T>

A new Task.