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 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.
- Author:
- Kohsuke Kawaguchi
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanawaitTermination(long timeout, TimeUnit unit) voidbooleanbooleanvoidshutdown()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
-