Class SingleLaneExecutorService
- All Implemented Interfaces:
Executor
,ExecutorService
ExecutorService
that executes submitted tasks sequentially
on top of another generic arbitrary ExecutorService
.
In general, ExecutorService
do not place constraints about the order in which submitted
tasks are executed. This class takes such an executor service, then creates a stronger guarantee
on the order of the executions. Namely, the submitted tasks are executed in the FIFO order,
and no two tasks are executed concurrently.
A large number of SingleLaneExecutorService
s backed by a single cached executor service
is more efficient than the same number of single-threaded ExecutorService
because of
the thread sharing.
This class is named SingleLaneExecutorService
because it's akin to create a driving lane
in a high way. You can have many lanes, but each lane is strictly sequentially ordered.
- Author:
- Kohsuke Kawaguchi
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
awaitTermination
(long timeout, TimeUnit unit) void
boolean
boolean
void
shutdown()
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submit
-
Constructor Details
-
SingleLaneExecutorService
- Parameters:
base
- Executor service that actually provides the threads that execute tasks.
-
-
Method Details
-
shutdown
public void shutdown()Note that this does not shutdown the wrapped
ExecutorService
. -
shutdownNow
Note that this does not shutdown the wrapped
ExecutorService
. -
isShutdown
public boolean isShutdown() -
isTerminated
public boolean isTerminated() -
awaitTermination
- Throws:
InterruptedException
-
execute
-