public abstract class AbstractExecutorService extends Object implements ExecutorService
ExecutorService
执行方法的默认实现。
此类实现submit
, invokeAny
和invokeAll
使用方法RunnableFuture
通过返回newTaskFor
,其默认为FutureTask
类此包中提供。
例如,submit(Runnable)的submit(Runnable)
创建一个执行和返回的关联的RunnableFuture
。
子类可以覆盖newTaskFor
方法以返回RunnableFuture
FutureTask的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. }
Constructor and Description |
---|
AbstractExecutorService() |
Modifier and Type | Method and Description |
---|---|
<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(Callable<T> callable)
返回给定可调用任务的
RunnableFuture 。
|
protected <T> RunnableFuture<T> |
newTaskFor(Runnable runnable, T value)
对于给定的可运行和默认值,返回一个
RunnableFuture 。
|
<T> Future<T> |
submit(Callable<T> task)
提交值返回任务以执行,并返回代表任务待处理结果的Future。
|
Future<?> |
submit(Runnable task)
提交一个可运行的任务执行,并返回一个表示该任务的未来。
|
<T> Future<T> |
submit(Runnable task, T result)
提交一个可运行的任务执行,并返回一个表示该任务的未来。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
awaitTermination, isShutdown, isTerminated, shutdown, shutdownNow
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
RunnableFuture
。
T
- 给定值的类型
runnable
- 正在包装的可运行任务
value
- 返回的未来的默认值
RunnableFuture
,当运行时,将运行底层的可运行程序,作为一个
Future
,它将产生给定的值作为其结果,并提供取消基础任务
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
RunnableFuture
。
T
- 可调用结果的类型
callable
- 正在包装的可调用任务
RunnableFuture
,当运行时,将调用底层可调用,作为
Future
将作为其结果产生可调用的结果,并提供取消基础任务
public Future<?> submit(Runnable task)
ExecutorService
复制
get
方法将返回null
成功完成时。
submit
在界面
ExecutorService
task
- 要提交的任务
RejectedExecutionException
- 如果任务无法安排执行
NullPointerException
- 如果任务为空
public <T> Future<T> submit(Runnable task, T result)
ExecutorService
复制
get
方法将在成功完成后返回给定的结果。
submit
在界面
ExecutorService
T
- 结果的类型
task
- 要提交的任务
result
- 结果返回
RejectedExecutionException
- 如果任务无法安排执行
NullPointerException
- 如果任务为空
public <T> Future<T> submit(Callable<T> task)
ExecutorService
复制
get
方法将在成功完成后返回任务的结果。
如果您想立即阻止等待任务,您可以使用result = exec.submit(aCallable).get();格式的result = exec.submit(aCallable).get();
注意: Executors
类包括一组可以将一些其他常见的类似闭包的对象(例如PrivilegedAction
)转换为Callable
表单的方法,以便他们可以提交。
submit
在界面
ExecutorService
T
- 任务结果的类型
task
- 提交的任务
RejectedExecutionException
- 如果任务无法安排执行
NullPointerException
- 如果任务为空
public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException
ExecutorService
复制
invokeAny
在界面
ExecutorService
T
- 从任务返回的值的类型
tasks
- 任务的收集
InterruptedException
- 如果在等待时中断
ExecutionException
- 如果没有任务成功完成
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
- 如果在任务成功完成之前已经过了给定的超时
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException
ExecutorService
复制
Future.isDone()
是true
的返回列表的每个元素。
请注意, 完成的任务可能会正常终止或抛出异常。
如果在此操作正在进行中修改了给定的集合,则此方法的结果是未定义的。
invokeAll
在接口
ExecutorService
T
- 从任务返回的值的类型
tasks
- 任务的收集
InterruptedException
- 如果在等待时中断,在这种情况下未完成的任务被取消
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException
ExecutorService
复制
Future.isDone()
是true
的返回列表的每个元素。
退货后,尚未完成的任务将被取消。
请注意, 完成的任务可能会正常终止或抛出异常。
如果在此操作正在进行中修改了给定的集合,则此方法的结果是未定义的。
invokeAll
在界面
ExecutorService
T
- 从任务返回的值的类型
tasks
- 任务的收集
timeout
- 等待的最长时间
unit
- 超时参数的时间单位
InterruptedException
- 如果在等待时中断,在这种情况下未完成的任务被取消