java.util.concurrent package defines three executor interfaces:
Executor, a simple interface that supports launching new tasks.
ExecutorService, a subinterface of
Executor, which adds features that help manage the lifecycle, both of the individual tasks and of the executor itself.
ScheduledExecutorService, a subinterface of
ExecutorService, supports future and/or periodic execution of tasks.
Typically, variables that refer to executor objects are declared as one of these three interface types, not with an executor class type.
Executor interface provides a single method,
execute, designed to be a drop-in replacement for a common thread-creation idiom. If
r is a
Runnable object, and
e is an
Executor object you can replace
However, the definition of
execute is less specific. The low-level idiom creates a new thread and launches it immediately. Depending on the
execute may do the same thing, but is more likely to use an existing worker thread to run
r, or to place
r in a queue to wait for a worker thread to become available. (We'll describe worker threads in the section on Thread Pools.)
The executor implementations in
java.util.concurrent are designed to make full use of the more advanced
ScheduledExecutorService interfaces, although they also work with the base
ExecutorService interface supplements
execute with a similar, but more versatile
submit method. Like
Runnable objects, but also accepts
Callable objects, which allow the task to return a value. The
submit method returns a
Future object, which is used to retrieve the
Callable return value and to manage the status of both
ExecutorService also provides methods for submitting large collections of
Callable objects. Finally,
ExecutorService provides a number of methods for managing the shutdown of the executor. To support immediate shutdown, tasks should handle interrupts correctly.
ScheduledExecutorService interface supplements the methods of its parent
schedule, which executes a
Callable task after a specified delay. In addition, the interface defines
scheduleWithFixedDelay, which executes specified tasks repeatedly, at defined intervals.