public class SingleLaneExecutorService extends AbstractExecutorService
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 SingleLaneExecutorServices 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.
| Constructor and Description |
|---|
SingleLaneExecutorService(ExecutorService base) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
awaitTermination(long timeout,
TimeUnit unit) |
void |
execute(Runnable command) |
boolean |
isShutdown() |
boolean |
isTerminated() |
void |
shutdown() |
List<Runnable> |
shutdownNow() |
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submitpublic SingleLaneExecutorService(ExecutorService base)
base - Executor service that actually provides the threads that execute tasks.public void shutdown()
Note that this does not shutdown the wrapped ExecutorService.
public List<Runnable> shutdownNow()
Note that this does not shutdown the wrapped ExecutorService.
public boolean isShutdown()
public boolean isTerminated()
public boolean awaitTermination(long timeout,
TimeUnit unit)
throws InterruptedException
InterruptedExceptionpublic void execute(Runnable command)
Copyright © 2004–2020. All rights reserved.