- java.lang.Object
-
- java.util.concurrent.AbstractExecutorService
-
- All Implemented Interfaces:
-
Executor
,ExecutorService
- 已知直接子类:
-
ForkJoinPool
,ThreadPoolExecutor
public abstract class AbstractExecutorService extends Object implements ExecutorService
提供ExecutorService
执行方法的默认实现。 此类实现submit
,invokeAny
和invokeAll
使用方法RunnableFuture
通过返回newTaskFor
,其默认为FutureTask
类此包中提供。 例如,submit(Runnable)
的实现创建一个执行和返回的关联的RunnableFuture
。 子类可以覆盖newTaskFor
方法返回RunnableFuture
其他实现比FutureTask
。扩展示例 。 以下是自定义
ThreadPoolExecutor
使用CustomTask
类而不是默认值FutureTask
类的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
-
-
构造方法摘要
构造方法 Constructor 描述 AbstractExecutorService()
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 <T> List<Future<T>>
invokeAll(Collection<? extends Callable<T>> tasks)
执行给定的任务,返回持有他们的状态和结果的所有完成的期货列表。<T> List<Future<T>>
invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
执行给定的任务,返回在所有完成或超时到期时持有其状态和结果的期货列表,以先发生者为准。<T> T
invokeAny(Collection<? extends Callable<T>> tasks)
执行给定的任务,返回成功完成的结果(即,不抛出异常),如果有的话。<T> T
invokeAny(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<?>
submit(Runnable task)
提交一个可运行的任务执行,并返回一个表示该任务的未来。<T> Future<T>
submit(Runnable task, T result)
提交一个可运行的任务执行,并返回一个表示该任务的未来。<T> Future<T>
submit(Callable<T> task)
提交值返回任务以执行,并返回代表任务待处理结果的Future。-
Methods inherited from interface java.util.concurrent.ExecutorService
awaitTermination, isShutdown, isTerminated, shutdown, shutdownNow
-
-
-
-
方法详细信息
-
newTaskFor
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
为给定的可运行和默认值返回一个RunnableFuture
。- 参数类型
-
T
- 给定值的类型 - 参数
-
runnable
- 正在包装的可运行任务 -
value
- 返回的未来的默认值 - 结果
-
一个
RunnableFuture
,当运行时,将运行底层的可运行程序,并且作为一个Future
将产生给定的值作为其结果,并提供取消基础任务 - 从以下版本开始:
- 1.6
-
newTaskFor
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
为给定的可调用任务返回一个RunnableFuture
。- 参数类型
-
T
- 可调用结果的类型 - 参数
-
callable
- 正在包装的可调用任务 - 结果
-
一个
RunnableFuture
,当运行时,将调用底层可调用,并作为一个Future
,将产生可调用的结果作为其结果,并提供取消基础任务 - 从以下版本开始:
- 1.6
-
submit
public Future<?> submit(Runnable task)
说明从接口ExecutorService
复制提交一个可运行的任务执行,并返回一个表示该任务的未来。 未来的get
方法将在成功完成后返回null
。- Specified by:
-
submit
在接口ExecutorService
- 参数
-
task
- 要提交的任务 - 结果
- 一个未来的代表,待完成任务
- 异常
-
RejectedExecutionException
- 如果任务无法安排执行 -
NullPointerException
- 如果任务为空
-
submit
public <T> Future<T> submit(Runnable task, T result)
说明从接口ExecutorService
复制提交一个可运行的任务执行,并返回一个表示该任务的未来。 未来的get
方法将在成功完成后返回给定的结果。- Specified by:
-
submit
在接口ExecutorService
- 参数类型
-
T
- 结果的类型 - 参数
-
task
- 要提交的任务 -
result
- 结果返回 - 结果
- 一个未来的代表,待完成任务
- 异常
-
RejectedExecutionException
- 如果该任务无法安排执行 -
NullPointerException
- 如果任务为空
-
submit
public <T> Future<T> submit(Callable<T> task)
说明从接口ExecutorService
复制提交值返回任务以执行,并返回代表任务待处理结果的Future。 未来的get
方法将在成功完成后返回任务的结果。如果您想立即阻止等待任务,您可以使用
result = exec.submit(aCallable).get();
表单的result = exec.submit(aCallable).get();
注意:
Executors
类包括一组可以将其他常见的类似闭包的对象(例如PrivilegedAction
)转换为Callable
表单的方法,以便它们可以提交。- Specified by:
-
submit
在接口ExecutorService
- 参数类型
-
T
- 任务结果的类型 - 参数
-
task
- 提交的任务 - 结果
- 一个未来的代表,待完成任务
- 异常
-
RejectedExecutionException
- 如果该任务无法安排执行 -
NullPointerException
- 如果任务为空
-
invokeAny
public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException
说明从接口ExecutorService
复制执行给定的任务,返回成功完成的结果(即,不抛出异常),如果有的话。 正常或异常退货后,尚未完成的任务将被取消。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。- Specified by:
-
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
复制执行给定的任务,返回一个已经成功完成的结果(即,不抛出异常),如果在给定的时间超过之前有的话。 正常或异常退货后,尚未完成的任务将被取消。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。- Specified by:
-
invokeAny
在接口ExecutorService
- 参数类型
-
T
- 从任务返回的值的类型 - 参数
-
tasks
- 任务的收集 -
timeout
- 等待的最长时间 -
unit
- 超时参数的时间单位 - 结果
- 其中一个任务返回的结果
- 异常
-
InterruptedException
- 如果在等待时中断 -
ExecutionException
- 如果没有任务成功完成 -
TimeoutException
- 如果在任务成功完成之前已经过了给定的超时
-
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException
描述从接口ExecutorService
复制执行给定的任务,返回持有他们的状态和结果的所有完成的期货列表。Future.isDone()
是返回列表的每个元素的true
。 请注意, 完成的任务可能会正常终止或抛出异常。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。- Specified by:
-
invokeAll
在接口ExecutorService
- 参数类型
-
T
- 从任务返回的值的类型 - 参数
-
tasks
- 任务的收集 - 结果
- 表示任务的期货列表,按照给定任务列表的迭代器产生的顺序顺序,每个都已完成
- 异常
-
InterruptedException
- 如果在等待时中断,在这种情况下未完成的任务被取消
-
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException
描述从接口ExecutorService
复制执行给定的任务,返回在所有完成或超时到期时持有其状态和结果的期货列表,以先发生者为准。Future.isDone()
是true
对于返回列表的每个元素。 退货后,尚未完成的任务将被取消。 请注意, 完成的任务可能会正常终止或抛出异常。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。- Specified by:
-
invokeAll
接口ExecutorService
- 参数类型
-
T
- 从任务返回的值的类型 - 参数
-
tasks
- 任务的收集 -
timeout
- 等待的最长时间 -
unit
- 超时参数的时间单位 - 结果
- 一个表示任务的期货列表,按照给定任务列表的迭代器生成的顺序。 如果操作没有超时,每个任务都会完成。 如果超时,其中一些任务将不会完成。
- 异常
-
InterruptedException
- 如果在等待时中断,在这种情况下未完成的任务被取消
-
-