Class SettableFuture<V>
- java.lang.Object
-
- com.google.common.util.concurrent.internal.InternalFutureFailureAccess
-
- com.google.common.util.concurrent.AbstractFuture<V>
-
- com.google.common.util.concurrent.AbstractFuture.TrustedFuture<V>
-
- com.google.common.util.concurrent.SettableFuture<V>
-
- All Implemented Interfaces:
AbstractFuture.Trusted<V>
,ListenableFuture<V>
,java.util.concurrent.Future<V>
@GwtCompatible public final class SettableFuture<V> extends AbstractFuture.TrustedFuture<V>
AListenableFuture
whose result can be set by aset(Object)
,setException(Throwable)
orsetFuture(ListenableFuture)
call. It can also, like any otherFuture
, be cancelled.SettableFuture
is the recommendedListenableFuture
implementation when your task cannot be implemented withListeningExecutorService
, the variousFutures
utility methods, orListenableFutureTask
. Those APIs have less opportunity for developer error. If your needs are more complex thanSettableFuture
supports, useAbstractFuture
, which offers an extensible version of the API.- Since:
- 9.0 (in 1.0 as
ValueFuture
)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.google.common.util.concurrent.AbstractFuture
AbstractFuture.Trusted<V>, AbstractFuture.TrustedFuture<V>
-
-
Constructor Summary
Constructors Modifier Constructor Description private
SettableFuture()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <V> SettableFuture<V>
create()
Creates a newSettableFuture
that can be completed or cancelled by a later method call.boolean
set(V value)
Sets the result of thisFuture
unless thisFuture
has already been cancelled or set (including set asynchronously).boolean
setException(java.lang.Throwable throwable)
Sets the failed result of thisFuture
unless thisFuture
has already been cancelled or set (including set asynchronously).boolean
setFuture(ListenableFuture<? extends V> future)
Sets the result of thisFuture
to match the supplied inputFuture
once the suppliedFuture
is done, unless thisFuture
has already been cancelled or set (including "set asynchronously," defined below).-
Methods inherited from class com.google.common.util.concurrent.AbstractFuture.TrustedFuture
addListener, cancel, get, get, isCancelled, isDone
-
Methods inherited from class com.google.common.util.concurrent.AbstractFuture
afterDone, interruptTask, maybePropagateCancellationTo, pendingToString, toString, tryInternalFastPathGetFailure, wasInterrupted
-
-
-
-
Method Detail
-
create
public static <V> SettableFuture<V> create()
Creates a newSettableFuture
that can be completed or cancelled by a later method call.
-
set
public boolean set(V value)
Description copied from class:AbstractFuture
Sets the result of thisFuture
unless thisFuture
has already been cancelled or set (including set asynchronously). When a call to this method returns, theFuture
is guaranteed to be done only if the call was accepted (in which case it returnstrue
). If it returnsfalse
, theFuture
may have previously been set asynchronously, in which case its result may not be known yet. That result, though not yet known, cannot be overridden by a call to aset*
method, only by a call toAbstractFuture.cancel(boolean)
.- Overrides:
set
in classAbstractFuture<V>
- Parameters:
value
- the value to be used as the result- Returns:
- true if the attempt was accepted, completing the
Future
-
setException
public boolean setException(java.lang.Throwable throwable)
Description copied from class:AbstractFuture
Sets the failed result of thisFuture
unless thisFuture
has already been cancelled or set (including set asynchronously). When a call to this method returns, theFuture
is guaranteed to be done only if the call was accepted (in which case it returnstrue
). If it returnsfalse
, theFuture
may have previously been set asynchronously, in which case its result may not be known yet. That result, though not yet known, cannot be overridden by a call to aset*
method, only by a call toAbstractFuture.cancel(boolean)
.- Overrides:
setException
in classAbstractFuture<V>
- Parameters:
throwable
- the exception to be used as the failed result- Returns:
- true if the attempt was accepted, completing the
Future
-
setFuture
public boolean setFuture(ListenableFuture<? extends V> future)
Description copied from class:AbstractFuture
Sets the result of thisFuture
to match the supplied inputFuture
once the suppliedFuture
is done, unless thisFuture
has already been cancelled or set (including "set asynchronously," defined below).If the supplied future is done when this method is called and the call is accepted, then this future is guaranteed to have been completed with the supplied future by the time this method returns. If the supplied future is not done and the call is accepted, then the future will be set asynchronously. Note that such a result, though not yet known, cannot be overridden by a call to a
set*
method, only by a call toAbstractFuture.cancel(boolean)
.If the call
setFuture(delegate)
is accepted and thisFuture
is later cancelled, cancellation will be propagated todelegate
. Additionally, any call tosetFuture
after any cancellation will propagate cancellation to the suppliedFuture
.Note that, even if the supplied future is cancelled and it causes this future to complete, it will never trigger interruption behavior. In particular, it will not cause this future to invoke the
AbstractFuture.interruptTask()
method, and theAbstractFuture.wasInterrupted()
method will not returntrue
.- Overrides:
setFuture
in classAbstractFuture<V>
- Parameters:
future
- the future to delegate to- Returns:
- true if the attempt was accepted, indicating that the
Future
was not previously cancelled or set.
-
-