@GwtCompatible(emulated=true) abstract class ImmediateFuture<V> extends java.lang.Object implements ListenableFuture<V>
Futures.immediate*.| Modifier and Type | Class and Description |
|---|---|
(package private) static class |
ImmediateFuture.ImmediateCancelledFuture<V> |
(package private) static class |
ImmediateFuture.ImmediateFailedCheckedFuture<V,X extends java.lang.Exception> |
(package private) static class |
ImmediateFuture.ImmediateFailedFuture<V> |
(package private) static class |
ImmediateFuture.ImmediateSuccessfulCheckedFuture<V,X extends java.lang.Exception> |
(package private) static class |
ImmediateFuture.ImmediateSuccessfulFuture<V> |
| Modifier and Type | Field and Description |
|---|---|
private static java.util.logging.Logger |
log |
| Constructor and Description |
|---|
ImmediateFuture() |
| Modifier and Type | Method and Description |
|---|---|
void |
addListener(java.lang.Runnable listener,
java.util.concurrent.Executor executor)
Registers a listener to be run on the given executor.
|
boolean |
cancel(boolean mayInterruptIfRunning) |
abstract V |
get() |
V |
get(long timeout,
java.util.concurrent.TimeUnit unit) |
boolean |
isCancelled() |
boolean |
isDone() |
public void addListener(java.lang.Runnable listener,
java.util.concurrent.Executor executor)
ListenableFutureFuture's computation is complete or, if the computation is already complete, immediately.
There is no guaranteed ordering of execution of listeners, but any listener added through this method is guaranteed to be called once the computation is complete.
Exceptions thrown by a listener will be propagated up to the executor. Any exception thrown
during Executor.execute (e.g., a RejectedExecutionException or an exception
thrown by direct execution) will be caught and
logged.
Note: For fast, lightweight listeners that would be safe to execute in any thread, consider
MoreExecutors.directExecutor(). Otherwise, avoid it. Heavyweight directExecutor
listeners can cause problems, and these problems can be difficult to reproduce because they
depend on timing. For example:
addListener. That caller may be a UI
thread or other latency-sensitive thread. This can harm UI responsiveness.
Future. That thread
may be an internal system thread such as an RPC network thread. Blocking that thread may stall
progress of the whole system. It may even cause a deadlock.
directExecutor listeners.
This is the most general listener interface. For common operations performed using
listeners, see Futures. For a simplified but general listener interface, see addCallback().
Memory consistency effects: Actions in a thread prior to adding a listener happen-before its execution begins, perhaps in another thread.
addListener in interface ListenableFuture<V>listener - the listener to run when the computation is completeexecutor - the executor to run the listener inpublic boolean cancel(boolean mayInterruptIfRunning)
cancel in interface java.util.concurrent.Future<V>public abstract V get() throws java.util.concurrent.ExecutionException
get in interface java.util.concurrent.Future<V>java.util.concurrent.ExecutionExceptionpublic V get(long timeout, java.util.concurrent.TimeUnit unit) throws java.util.concurrent.ExecutionException
get in interface java.util.concurrent.Future<V>java.util.concurrent.ExecutionExceptionpublic boolean isCancelled()
isCancelled in interface java.util.concurrent.Future<V>public boolean isDone()
isDone in interface java.util.concurrent.Future<V>