Executor:Executor家族的首长。父接口,其中只有一个方法
// 在将来的某个时间执行给定的命令
void execute(Runnable command);
ExecutorService:Executor的扩展接口,包含的所有方法如下:
image.png
// 启动有序关闭,在该关闭中执行先前提交的任务,但不接受任何新任务。如果已经关闭,则调用不会产生任何其他影响。
void shutdown();
// 尝试停止所有正在执行的任务,暂停正在等待的任务的处理,并返回正在等待执行的任务的列表。
List<Runnable> shutdownNow();
// 如果该执行程序已关闭,则返回true
boolean isShutdown();
// 如果所有任务在关闭后都已完成,则返回true
// 请注意,除非首先调用shutdown或code shutdownNow,否则isTerminated永远不会是true
boolean isTerminated();
// 当等待超过设定时间时,会监测 ExecutorService是否已经关闭,若关闭则返回true,否则返回false
boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException;
// 提交一个callable任务,并返回一个一个代表任务执行结果的Future
<T> Future<T> submit(Callable<T> task);
//当task执行成功的时候future.get()返回result
<T> Future<T> submit(Runnable task, T result);
//当task执行成功的时候future.get()返回null
Future<?> submit(Runnable task);
// 批量执行任务,并返回执行结果的Future的List。
// 如果在进行此操作时修改了给定的任务集合,则此方法的结果不确定。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException;
// 批量执行任务,并返回执行结果的Future的List。指定超时时间
// 如果操作没有超时,每个任务都会完成。 如果超时,其中一些任务将不会完成。也就拿不到任务的执行结果
<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;
网友评论