- 一個Executor,提供管理終止的方法和可以生成Future以跟蹤一個或多個異步任務(wù)的進(jìn)度的方法猜拾。
- 可以關(guān)閉一個ExecutorService,這將導(dǎo)致它拒絕新任務(wù)。提供了兩種不同的方法來關(guān)閉ExecutorService烈炭。
- shutdown方法將允許先前提交的任務(wù)在終止之前執(zhí)行,而shutdownNow方法阻止等待任務(wù)啟動并嘗試停止當(dāng)前正在執(zhí)行的任務(wù)宝恶。終止后符隙,執(zhí)行者沒有正在執(zhí)行的任務(wù)趴捅,沒有等待執(zhí)行的任務(wù),也沒有新的任務(wù)可以提交霹疫。應(yīng)關(guān)閉未使用的ExecutorService以允許回收其資源拱绑。
- 方法submit通過創(chuàng)建和返回可用于取消執(zhí)行和或等待完成的Future擴(kuò)展了Executor的execute方法。
- 方法invokeAny和invokeAll執(zhí)行最常用的批量執(zhí)行形式丽蝎,然后等待至少一個或全部完成猎拨。
public interface ExecutorService extends Executor {
//啟動有序關(guān)閉,其中執(zhí)行先前提交的任務(wù)征峦,但不會接受新任務(wù)迟几。如果已經(jīng)關(guān)閉,調(diào)用沒有額外的效果栏笆。
//此方法不等待先前提交的任務(wù)完成執(zhí)行类腮。使用awaitTermination來做到這一點。
void shutdown();
//嘗試停止所有正在執(zhí)行的任務(wù)蛉加,停止等待任務(wù)的處理蚜枢,并返回等待執(zhí)行的任務(wù)列表。
//此方法不等待主動執(zhí)行的任務(wù)終止针饥。使用awaitTermination來做到這一點厂抽。
//除了盡最大努力停止處理正在執(zhí)行的任務(wù)之外,沒有任何保證.
List<Runnable> shutdownNow();
//如果此執(zhí)行程序已關(guān)閉丁眼,則返回true筷凤。
boolean isShutdown();
//調(diào)用shutdown或shutdownNow后,如果所有任務(wù)都已完成苞七,則返回true藐守。
boolean isTerminated();
//在shutdown請求后阻塞,直到所有任務(wù)都完成執(zhí)行蹂风,或者發(fā)生超時卢厂,或者當(dāng)前線程被中斷,以先發(fā)生者為準(zhǔn)惠啄。
boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException;
//提交一個有返回值的任務(wù)以供執(zhí)行慎恒,并返回一個表示該任務(wù)待處理結(jié)果的 Future。 Future 的get方法將在成功完成后返回任務(wù)的結(jié)果撵渡。
<T> Future<T> submit(Callable<T> task);
//提交Runnable任務(wù)以執(zhí)行并返回代表該任務(wù)的Future融柬。Future的get方法將在成功完成后返回給定的result。
<T> Future<T> submit(Runnable task, T result);
//提交Runnable任務(wù)以執(zhí)行并返回代表該任務(wù)的Future趋距。Future 的get方法將在成功完成后返回null丹鸿。
Future<?> submit(Runnable task);
//執(zhí)行給定的任務(wù),返回一個 Futures 列表棚品,在所有完成時保存它們的狀態(tài)和結(jié)果靠欢。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException;
//執(zhí)行給定的任務(wù)廊敌,當(dāng)全部完成或超時到期時,返回保存其狀態(tài)和結(jié)果的 Futures 列表门怪。返回時骡澈,未完成的任務(wù)將被取消。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException;
//執(zhí)行給定的任務(wù)掷空,返回已成功完成的任務(wù)的結(jié)果(即不拋出異常)肋殴。正常或異常返回時坦弟,取消未完成的任務(wù)护锤。
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException, ExecutionException;
//執(zhí)行給定任務(wù),超時前返回已成功完成的任務(wù)的結(jié)果(即不拋出異常)酿傍。正忱优常或異常返回時,取消未完成的任務(wù)赤炒。
<T> T invokeAny(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}