java.lang.Object
java.util.concurrent.AbstractExecutorService
- 所有已实现的接口:
AutoCloseable,Executor,ExecutorService
- 已知子类:
ForkJoinPool,ThreadPoolExecutor
提供
ExecutorService 执行方法的默认实现。此类使用 newTaskFor 返回的 RunnableFuture 实现 submit 、 invokeAny 和 invokeAll 方法,默认为本包中提供的 FutureTask 类。例如,submit(Runnable) 的实现创建了一个关联的 RunnableFuture,它被执行并返回。子类可以覆盖 newTaskFor 方法以返回 RunnableFuture 实现而不是 FutureTask 。
扩展示例。这是自定义 ThreadPoolExecutor 以使用 CustomTask 类而不是默认 FutureTask 类的草图:
public class CustomThreadPoolExecutor extends ThreadPoolExecutor {
static class CustomTask<V> implements RunnableFuture<V> { ... }
protected <V> RunnableFuture<V> newTaskFor(Callable<V> c) {
return new CustomTask<V>(c);
}
protected <V> RunnableFuture<V> newTaskFor(Runnable r, V v) {
return new CustomTask<V>(r, v);
}
// ... add constructors, etc.
}
- 自从:
- 1.5
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述invokeAll(Collection<? extends Callable<T>> tasks) 执行给定的任务,在所有任务完成时返回一个 Futures 列表,其中包含它们的状态和结果。invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 执行给定的任务,返回一个 Futures 列表,当所有任务完成或超时到期时(以先发生者为准),保存它们的状态和结果。<T> TinvokeAny(Collection<? extends Callable<T>> tasks) 执行给定的任务,返回成功完成的任务的结果(即,没有抛出异常),如果有的话。<T> TinvokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 执行给定的任务,返回已成功完成的任务的结果(即,没有抛出异常),如果在给定的超时结束之前有任何执行的话。protected <T> RunnableFuture<T>newTaskFor(Runnable runnable, T value) 为给定的可运行和默认值返回一个RunnableFuture。protected <T> RunnableFuture<T>newTaskFor(Callable<T> callable) 为给定的可调用任务返回一个RunnableFuture。Future<?>提交一个 Runnable 任务以供执行并返回一个代表该任务的 Future。<T> Future<T>提交一个 Runnable 任务以供执行并返回一个代表该任务的 Future。<T> Future<T>提交一个有返回值的任务以供执行,并返回一个代表任务未决结果的 Future。在类 java.lang.Object 中声明的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait在接口 java.util.concurrent.ExecutorService 中声明的方法
awaitTermination, close, isShutdown, isTerminated, shutdown, shutdownNow
-
构造方法详细信息
-
AbstractExecutorService
public AbstractExecutorService()子类调用的构造方法。
-
-
方法详情
-
newTaskFor
为给定的可运行和默认值返回一个RunnableFuture。- 类型参数:
T- 给定值的类型- 参数:
runnable- 正在包装的可运行任务value- 返回的未来的默认值- 返回:
-
一个
RunnableFuture,它在运行时将运行底层的可运行对象,并且作为一个Future,它将产生给定的值作为其结果并提供取消底层任务 - 自从:
- 1.6
-
newTaskFor
为给定的可调用任务返回一个RunnableFuture。- 类型参数:
T- 可调用结果的类型- 参数:
callable- 被包装的可调用任务- 返回:
-
一个
RunnableFuture,它在运行时将调用底层可调用对象,而作为Future,它将产生可调用对象的结果作为其结果,并提供取消底层任务的功能 - 自从:
- 1.6
-
submit
从接口ExecutorService复制的描述提交一个 Runnable 任务以供执行并返回一个代表该任务的 Future。 Future 的get方法将在 successful 完成后返回null。- 指定者:
submit在接口ExecutorService中- 参数:
task- 要提交的任务- 返回:
- 代表任务未决完成的 Future
- 抛出:
RejectedExecutionException- 如果无法安排任务执行NullPointerException- 如果任务为空
-
submit
从接口ExecutorService复制的描述提交一个 Runnable 任务以供执行并返回一个代表该任务的 Future。 Future 的get方法将在成功完成后返回给定的结果。- 指定者:
submit在接口ExecutorService中- 类型参数:
T- 结果的类型- 参数:
task- 要提交的任务result- 要返回的结果- 返回:
- 代表任务未决完成的 Future
- 抛出:
RejectedExecutionException- 如果无法安排任务执行NullPointerException- 如果任务为空
-
submit
从接口ExecutorService复制的描述提交一个有返回值的任务以供执行,并返回一个代表任务未决结果的 Future。 Future 的get方法将在成功完成后返回任务结果。如果你想立即阻塞等待任务,你可以使用
result = exec.submit(aCallable).get();形式的结构注意:
Executors类包含一组方法,可以将一些其他常见的类似闭包的对象(例如,PrivilegedAction转换为Callable形式)以便提交。- 指定者:
submit在接口ExecutorService中- 类型参数:
T- 任务结果的类型- 参数:
task- 要提交的任务- 返回:
- 代表任务未决完成的 Future
- 抛出:
RejectedExecutionException- 如果无法安排任务执行NullPointerException- 如果任务为空
-
invokeAny
public <T> T invokeAny(Collection <? extends Callable <T>> tasks) throws InterruptedException , ExecutionException 从接口ExecutorService复制的描述执行给定的任务,返回成功完成的任务的结果(即,没有抛出异常),如果有的话。在正常或异常返回时,未完成的任务将被取消。如果在执行此操作时修改了给定的集合,则此方法的结果是未定义的。- 指定者:
invokeAny在接口ExecutorService中- 类型参数:
T- 从任务返回的值的类型- 参数:
tasks- 任务集合- 返回:
- 其中一项任务返回的结果
- 抛出:
InterruptedException- 如果在等待时被打断ExecutionException- 如果没有任务成功完成
-
invokeAny
public <T> T invokeAny(Collection <? extends Callable <T>> tasks, long timeout, TimeUnit unit) throws InterruptedException , ExecutionException , TimeoutException 从接口ExecutorService复制的描述执行给定的任务,返回已成功完成的任务的结果(即,没有抛出异常),如果在给定的超时结束之前有任何执行的话。在正常或异常返回时,未完成的任务将被取消。如果在执行此操作时修改了给定的集合,则此方法的结果是未定义的。- 指定者:
invokeAny在接口ExecutorService中- 类型参数:
T- 从任务返回的值的类型- 参数:
tasks- 任务集合timeout- 最长时间等待unit- 超时参数的时间单位- 返回:
- 其中一项任务返回的结果
- 抛出:
InterruptedException- 如果在等待时被打断ExecutionException- 如果没有任务成功完成TimeoutException- 如果给定超时在任何任务成功完成之前过去
-
invokeAll
public <T> List <Future <T>> invokeAll(Collection <? extends Callable <T>> tasks) throws InterruptedException 从接口ExecutorService复制的描述执行给定的任务,在所有任务完成时返回一个 Futures 列表,其中包含它们的状态和结果。Future.isDone()是返回列表中每个元素的true。请注意,completed 任务可以正常终止或通过抛出异常终止。如果在执行此操作时修改了给定的集合,则此方法的结果是未定义的。- 指定者:
invokeAll在接口ExecutorService中- 类型参数:
T- 从任务返回的值的类型- 参数:
tasks- 任务集合- 返回:
- 代表任务的 Futures 列表,顺序与迭代器为给定任务列表生成的顺序相同,每个任务都已完成
- 抛出:
InterruptedException- 如果在等待时被打断,在这种情况下未完成的任务将被取消
-
invokeAll
public <T> List <Future <T>> invokeAll(Collection <? extends Callable <T>> tasks, long timeout, TimeUnit unit) throws InterruptedException 从接口ExecutorService复制的描述执行给定的任务,返回一个 Futures 列表,当所有任务完成或超时到期时(以先发生者为准),保存它们的状态和结果。Future.isDone()是返回列表中每个元素的true。返回时,未完成的任务将被取消。请注意,completed 任务可以正常终止或通过抛出异常终止。如果在执行此操作时修改了给定的集合,则此方法的结果是未定义的。- 指定者:
invokeAll在接口ExecutorService中- 类型参数:
T- 从任务返回的值的类型- 参数:
tasks- 任务集合timeout- 最长时间等待unit- 超时参数的时间单位- 返回:
- 代表任务的 Futures 列表,其顺序与迭代器为给定任务列表生成的顺序相同。如果操作没有超时,则每个任务都已完成。如果确实超时,则其中一些任务将不会完成。
- 抛出:
InterruptedException- 如果在等待时被打断,在这种情况下未完成的任务将被取消
-