Class ExecutionList
- java.lang.Object
-
- com.google.common.util.concurrent.ExecutionList
-
@GwtIncompatible public final class ExecutionList extends Object
A support class forListenableFuture
implementations to manage their listeners. An instance contains a list of listeners, each with an associatedExecutor
, and guarantees that everyRunnable
that is added will be executed afterexecute()
is called. AnyRunnable
added after the call toexecute
is still guaranteed to execute. There is no guarantee, however, that listeners will be executed in the order that they are added.Exceptions thrown by a listener will be propagated up to the executor. Any exception thrown during
Executor.execute
(e.g., aRejectedExecutionException
or an exception thrown by direct execution) will be caught and logged.- Since:
- 1.0
- Author:
- Nishant Thakkar, Sven Mawson
-
-
Constructor Summary
Constructors Constructor Description ExecutionList()
Creates a new, emptyExecutionList
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(Runnable runnable, Executor executor)
Adds theRunnable
and accompanyingExecutor
to the list of listeners to execute.void
execute()
Runs this execution list, executing all existing pairs in the order they were added.
-
-
-
Constructor Detail
-
ExecutionList
public ExecutionList()
Creates a new, emptyExecutionList
.
-
-
Method Detail
-
add
public void add(Runnable runnable, Executor executor)
Adds theRunnable
and accompanyingExecutor
to the list of listeners to execute. If execution has already begun, the listener is executed immediately.When selecting an executor, note that
directExecutor
is dangerous in some cases. See the discussion in theListenableFuture.addListener
documentation.
-
execute
public void execute()
Runs this execution list, executing all existing pairs in the order they were added. However, note that listeners added after this point may be executed before those previously added, and note that the execution order of all listeners is ultimately chosen by the implementations of the supplied executors.This method is idempotent. Calling it several times in parallel is semantically equivalent to calling it exactly once.
- Since:
- 10.0 (present in 1.0 as
run
)
-
-