Class SettableFuture<V>
- All Implemented Interfaces:
AbstractFuture.Trusted<V>,ListenableFuture<V>,Future<V>
ListenableFuture whose result can be set by a set(Object), setException(Throwable) or setFuture(ListenableFuture) call. It can also, like any
other Future, be cancelled.
SettableFuture is the recommended ListenableFuture implementation when your
task cannot be implemented with ListeningExecutorService, the various Futures
utility methods, or ListenableFutureTask. Those APIs have less opportunity for developer
error. If your needs are more complex than SettableFuture supports, use AbstractFuture, 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>Nested classes/interfaces inherited from interface java.util.concurrent.Future
Future.State -
Field Summary
Fields inherited from class com.google.common.util.concurrent.AbstractFuture
GENERATE_CANCELLATION_CAUSES, log -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <V> SettableFuture<V> create()Creates a newSettableFuturethat can be completed or cancelled by a later method call.booleanSets the result of thisFutureunless thisFuturehas already been cancelled or set (including set asynchronously).booleansetException(Throwable throwable) Sets the failed result of thisFutureunless thisFuturehas already been cancelled or set (including set asynchronously).booleansetFuture(ListenableFuture<? extends V> future) Sets the result of thisFutureto match the supplied inputFutureonce the suppliedFutureis done, unless thisFuturehas 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, isDoneMethods inherited from class com.google.common.util.concurrent.AbstractFuture
afterDone, interruptTask, maybePropagateCancellationTo, pendingToString, toString, tryInternalFastPathGetFailure, wasInterruptedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.concurrent.Future
exceptionNow, resultNow, state
-
Constructor Details
-
SettableFuture
private SettableFuture()
-
-
Method Details
-
create
Creates a newSettableFuturethat can be completed or cancelled by a later method call. -
set
Description copied from class:AbstractFutureSets the result of thisFutureunless thisFuturehas already been cancelled or set (including set asynchronously). When a call to this method returns, theFutureis guaranteed to be done only if the call was accepted (in which case it returnstrue). If it returnsfalse, theFuturemay 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).Beware of completing a future while holding a lock. Its listeners may do slow work or acquire other locks, risking deadlocks.
- Overrides:
setin classAbstractFuture<V>- Parameters:
value- the value to be used as the result- Returns:
- true if the attempt was accepted, completing the
Future
-
setException
Description copied from class:AbstractFutureSets the failed result of thisFutureunless thisFuturehas already been cancelled or set (including set asynchronously). When a call to this method returns, theFutureis guaranteed to be done only if the call was accepted (in which case it returnstrue). If it returnsfalse, theFuturemay 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).Beware of completing a future while holding a lock. Its listeners may do slow work or acquire other locks, risking deadlocks.
- Overrides:
setExceptionin classAbstractFuture<V>- Parameters:
throwable- the exception to be used as the failed result- Returns:
- true if the attempt was accepted, completing the
Future
-
setFuture
Description copied from class:AbstractFutureSets the result of thisFutureto match the supplied inputFutureonce the suppliedFutureis done, unless thisFuturehas 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 thisFutureis later cancelled, cancellation will be propagated todelegate. Additionally, any call tosetFutureafter 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.Beware of completing a future while holding a lock. Its listeners may do slow work or acquire other locks, risking deadlocks.
- Overrides:
setFuturein classAbstractFuture<V>- Parameters:
future- the future to delegate to- Returns:
- true if the attempt was accepted, indicating that the
Futurewas not previously cancelled or set.
-