is new.
public interface ExecutorService
An Executor that provides methods to manage termination and methods that can produce a Future for tracking progress of one or more asynchronous tasks.
An ExecutorService can be shut down, which will cause it to stop accepting new tasks. After being shut down, the executor will eventually terminate, at which point no tasks are actively executing, no tasks are awaiting execution, and no new tasks can be submitted.
Method submit extends base method Executor.execute(java.lang.Runnable) by creating and returning a Future that can be used to cancel execution and/or wait for completion. Methods invokeAny and invokeAll perform the most commonly useful forms of bulk execution, executing a collection of tasks and then waiting for at least one, or all, to complete. (Class ExecutorCompletionService can be used to write customized variants of these methods.)
The Executors class provides factory methods for the executor services provided in this package.
class NetworkService {
private final ServerSocket serverSocket;
private final ExecutorService pool;
public NetworkService(int port, int poolSize)
throws IOException {
serverSocket = new ServerSocket(port);
pool = Executors.newFixedThreadPool(poolSize);
}
public void serve() {
try {
for (;;) {
pool.execute(new Handler(serverSocket.accept()));
}
} catch (IOException ex) {
pool.shutdown();
}
}
}
class Handler implements Runnable {
private final Socket socket;
Handler(Socket socket) { this.socket = socket; }
public void run() {
// read and service request
}
}
Memory consistency effects: Actions in a thread prior to the submission of a Runnable or Callable task to an ExecutorService
happen-before
any actions taken by that task, which in turn
happen-before
the result is retrieved via Future.get().
| Method Summary | ||
|---|---|---|
| boolean |
awaitTermination
(long timeout,
TimeUnit
unit) Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first. |
|
|
invokeAll
(
Collection
<? extends
Callable
Executes the given tasks, returning a list of Futures holding their status and results when all complete. |
|
|
invokeAll
(
Collection
<? extends
Callable
Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first. |
|
|
invokeAny
(
Collection
<? extends
Callable
Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do. |
|
|
invokeAny
(
Collection
<? extends
Callable
Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do before the given timeout elapses. |
|
| boolean |
isShutdown
() Returns true if this executor has been shut down. |
|
| boolean |
isTerminated
() Returns true if all tasks have completed following shut down. |
|
| void |
shutdown
() Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted. |
|
| List < Runnable > |
shutdownNow
() Attempts to stop all actively executing tasks, halts the processing of waiting tasks, and returns a list of the tasks that were awaiting execution. |
|
|
submit
(
Callable
<T> task) Submits a value-returning task for execution and returns a Future representing the pending results of the task. |
|
| Future |
submit
(
Runnable
Submits a Runnable task for execution and returns a Future representing that task. |
|
|
submit
(
Runnable
task, T result) Submits a Runnable task for execution and returns a Future representing that
task.
|
|
| Methods inherited from interface java.util.concurrent. Executor |
|---|
| execute |
| Method Detail |
|---|
void shutdown()
List<Runnable> shutdownNow()
There are no guarantees beyond best-effort attempts to stop processing actively executing tasks. For example, typical implementations will cancel via
Thread.interrupt()
, so
if
any
task that fails
tasks mask or fail
to respond to
interrupts
interrupts, they
may never terminate.
boolean isShutdown()
boolean isTerminated()
boolean awaitTermination(long timeout,
TimeUnit unit)
throws InterruptedException
<T> Future<T> submit(Callable<T> task)
The Future's
get
method will return the task's result upon successful completion.
If you would like to immediately block waiting for a task, you can use constructions of the form result = exec.submit(aCallable).get();
Note: The Executors class includes a set of methods that can convert some other common closure-like objects, for example, PrivilegedAction to Callable form so they can be submitted.
the
task cannot be scheduled for execution
the
task
is
null
<T> Future<T> submit(Runnable task,
T result)
task. The Future's
get
method
upon successful completion.
a Future representing pending completion of the task
the
task cannot be scheduled for execution
the
task
is
null Future<?> submit(Runnable task)
The Future's
get
method will return
null
upon successful completion.
a Future representing pending completion of the task
the
task cannot be scheduled for execution
the
task
is
null <T> List<Future<T>> invokeAll(Collection<? extends
Callable
<Callable<T>> tasks) throws InterruptedException
<T> List<Future<T>> invokeAll(Collection<? extends
Callable
<Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException
a
cancelled
<T> T invokeAny(Collection<? extends
Callable
<Callable<T>> tasks) throws InterruptedException, ExecutionException
the
tasks
is
empty <T> T invokeAny(Collection<? extends
Callable
<Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
the