@CanIgnoreReturnValue @GwtCompatible public abstract class ForwardingFuture<V> extends ForwardingObject implements Future<V>
Future which forwards all its method calls to another future. Subclasses should
override one or more methods to modify the behavior of the backing future as desired per the decorator pattern.
Most subclasses can just use ForwardingFuture.SimpleForwardingFuture.
| Modifier and Type | Class and Description |
|---|---|
static class |
ForwardingFuture.SimpleForwardingFuture<V>
A simplified version of
ForwardingFuture where subclasses can pass in an already
constructed Future as the delegate. |
| Modifier | Constructor and Description |
|---|---|
protected |
ForwardingFuture()
Constructor for use by subclasses.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
cancel(boolean mayInterruptIfRunning)
Attempts to cancel execution of this task.
|
protected abstract Future<? extends V> |
delegate()
Returns the backing delegate instance that methods are forwarded to.
|
V |
get()
Waits if necessary for the computation to complete, and then
retrieves its result.
|
V |
get(long timeout,
TimeUnit unit)
Waits if necessary for at most the given time for the computation
to complete, and then retrieves its result, if available.
|
boolean |
isCancelled()
Returns
true if this task was cancelled before it completed
normally. |
boolean |
isDone()
Returns
true if this task completed. |
toStringprotected ForwardingFuture()
protected abstract Future<? extends V> delegate()
ForwardingObjectForwardingSet.delegate(). Concrete subclasses override this method to supply the
instance being decorated.delegate in class ForwardingObjectpublic boolean cancel(boolean mayInterruptIfRunning)
java.util.concurrent.Futurecancel is called,
this task should never run. If the task has already started,
then the mayInterruptIfRunning parameter determines
whether the thread executing this task should be interrupted in
an attempt to stop the task.
After this method returns, subsequent calls to Future.isDone() will
always return true. Subsequent calls to Future.isCancelled()
will always return true if this method returned true.
cancel in interface Future<V>mayInterruptIfRunning - true if the thread executing this
task should be interrupted; otherwise, in-progress tasks are allowed
to completefalse if the task could not be cancelled,
typically because it has already completed normally;
true otherwisepublic boolean isCancelled()
java.util.concurrent.Futuretrue if this task was cancelled before it completed
normally.isCancelled in interface Future<V>true if this task was cancelled before it completedpublic boolean isDone()
java.util.concurrent.Futuretrue if this task completed.
Completion may be due to normal termination, an exception, or
cancellation -- in all of these cases, this method will return
true.public V get() throws InterruptedException, ExecutionException
java.util.concurrent.Futureget in interface Future<V>InterruptedException - if the current thread was interrupted
while waitingExecutionException - if the computation threw an
exceptionpublic V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
java.util.concurrent.Futureget in interface Future<V>timeout - the maximum time to waitunit - the time unit of the timeout argumentInterruptedException - if the current thread was interrupted
while waitingExecutionException - if the computation threw an
exceptionTimeoutException - if the wait timed outCopyright © 2010–2020. All rights reserved.