Class SingleLaneExecutorService

  • All Implemented Interfaces:
    Executor, ExecutorService

    public class SingleLaneExecutorService
    extends AbstractExecutorService
    Creates an 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 Detail

      • SingleLaneExecutorService

        public SingleLaneExecutorService​(ExecutorService base)
        Parameters:
        base - Executor service that actually provides the threads that execute tasks.