- 一个Executor,提供管理终止的方法和可以生成Future以跟踪一个或多个异步任务的进度的方法。
- 可以关闭一个ExecutorService,这将导致它拒绝新任务。提供了两种不同的方法来关闭ExecutorService。
- shutdown方法将允许先前提交的任务在终止之前执行,而shutdownNow方法阻止等待任务启动并尝试停止当前正在执行的任务。终止后,执行者没有正在执行的任务,没有等待执行的任务,也没有新的任务可以提交。应关闭未使用的ExecutorService以允许回收其资源。
- 方法submit通过创建和返回可用于取消执行和或等待完成的Future扩展了Executor的execute方法。
- 方法invokeAny和invokeAll执行最常用的批量执行形式,然后等待至少一个或全部完成。
public interface ExecutorService extends Executor {
//启动有序关闭,其中执行先前提交的任务,但不会接受新任务。如果已经关闭,调用没有额外的效果。
//此方法不等待先前提交的任务完成执行。使用awaitTermination来做到这一点。
void shutdown();
//尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表。
//此方法不等待主动执行的任务终止。使用awaitTermination来做到这一点。
//除了尽最大努力停止处理正在执行的任务之外,没有任何保证.
List<Runnable> shutdownNow();
//如果此执行程序已关闭,则返回true。
boolean isShutdown();
//调用shutdown或shutdownNow后,如果所有任务都已完成,则返回true。
boolean isTerminated();
//在shutdown请求后阻塞,直到所有任务都完成执行,或者发生超时,或者当前线程被中断,以先发生者为准。
boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException;
//提交一个有返回值的任务以供执行,并返回一个表示该任务待处理结果的 Future。 Future 的get方法将在成功完成后返回任务的结果。
<T> Future<T> submit(Callable<T> task);
//提交Runnable任务以执行并返回代表该任务的Future。Future的get方法将在成功完成后返回给定的result。
<T> Future<T> submit(Runnable task, T result);
//提交Runnable任务以执行并返回代表该任务的Future。Future 的get方法将在成功完成后返回null。
Future<?> submit(Runnable task);
//执行给定的任务,返回一个 Futures 列表,在所有完成时保存它们的状态和结果。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException;
//执行给定的任务,当全部完成或超时到期时,返回保存其状态和结果的 Futures 列表。返回时,未完成的任务将被取消。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException;
//执行给定的任务,返回已成功完成的任务的结果(即不抛出异常)。正常或异常返回时,取消未完成的任务。
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException, ExecutionException;
//执行给定任务,超时前返回已成功完成的任务的结果(即不抛出异常)。正常或异常返回时,取消未完成的任务。
<T> T invokeAny(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
网友评论