java中ExecutorService接口(二)

2014-11-23 23:41:31 · 作者: · 浏览: 1
le task)

提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future。该 Future 的 get 方法在成功完成时将会返回该任务的结果。

如果想立即阻塞任务的等待,则可以使用 result = exec.submit(aCallable).get(); 形式的构造。

注:Executors 类包括了一组方法,可以转换某些其他常见的类似于闭包的对象,例如,将 PrivilegedAction 转换为Callable 形式,这样就可以提交它们了。

参数: task - 要提交的任务

返回: 表示任务等待完成的 Future

抛出: RejectedExecutionException - 如果任务无法安排执行

NullPointerException - 如果该任务为 null

7、 Future submit(Runnable task, T result)

提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future。该 Future 的 get 方法在成功完成时将会返回给定的结果。

参数: task - 要提交的任务 result - 返回的结果

返回: 表示任务等待完成的 Future

抛出: RejectedExecutionException - 如果任务无法安排执行

NullPointerException - 如果该任务为 null

8、Future submit(Runnable task)

提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future。该 Future 的 get 方法在成功 完成时将会返回null

参数:task - 要提交的任务

返回:表示任务等待完成的 Future

抛出:RejectedExecutionException - 如果任务无法安排执行

NullPointerException - 如果该任务为 null

9、 List > invokeAll(Collection > tasks) throws InterruptedException

执行给定的任务,当所有任务完成时,返回保持任务状态和结果的 Future 列表。返回列表的所有元素的 Future.isDone()true。注意,可以正常地或通过抛出异常来终止已完成 任务。如果正在进行此操作时修改了给定的 collection,则此方法的结果是不确定的。

参数:tasks - 任务 collection

返回:表示任务的 Future 列表,列表顺序与给定任务列表的迭代器所生成的顺序相同,每个任务都已完成。

抛出:InterruptedException - 如果等待时发生中断,在这种情况下取消尚未完成的任务。

NullPointerException - 如果任务或其任意元素为 null

RejectedExecutionException - 如果所有任务都无法安排执行

10、 List > invokeAll(Collection > tasks, long timeout, TimeUnit unit) throws InterruptedException

执行给定的任务,当所有任务完成或超时期满时(无论哪个首先发生),返回保持任务状态和结果的 Future 列表。返回列表的所有元素的 Future.isDone()true。一旦返回后,即取消尚未完成的任务。注意,可以正常地或通过抛出异常来终止已完成 任务。如果此操作正在进行时修改了给定的 collection,则此方法的结果是不确定的。

参数:tasks - 任务 collection timeout - 最长等待时间 unit - timeout 参数的时间单位

返回:表示任务的 Future 列表,列表顺序与给定任务列表的迭代器所生成的顺序相同。如果操作未超时,则已完成所有任务。如果确实超时了,则某些任务尚未完成。

抛出:InterruptedException - 如果等待时发生中断,在这种情况下取消尚未完成的任务

NullPointerException - 如果任务或其任意元素或 unit 为 null

RejectedExecutionException - 如果所有任务都无法安排执行

11、 T invokeAny(Collection > tasks) throws InterruptedException, ExecutionException

执行给定的任务,如果某个任务已成功完成(也就是未抛出异常),则返回其结果。一旦正常或异常返回后,则取消尚未完成的任务。如果此操作正在进行时修改了给定的 collection,则此方法的结果是不确定的。

参数:tasks - 任务 collection

返回:某个任务返回的结果

抛出:InterruptedException - 如果等待时发生中断

NullPointerException - 如果任务或其任意元素为 null

IllegalArgumentException - 如果任务为空

ExecutionException - 如果没有任务成功完成

RejectedExecutionException - 如果任务无法安排执行

12、 T invokeAny(Collection > tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException

执行给定的任务,如果在给定的超时期满前某个任务已成功完成(也就是未抛出异常),则返回其结果。一旦正常或异常返回后,则取消尚未完成的任务。如果此操作正在进行时修改了给定的 collection,则此方法的结果是不确定的。

参数: tasks - 任务 collection timeout - 最长等待时间 unit - timeout 参数的时间单位

返回: 某个任务返回的结果

抛出: InterruptedException - 如果等待时发生中断

NullPointerException - 如果任务或其任意元素或 unit 为 null

TimeoutException - 如果在所有任务成功完成之前给定的超时期满

ExecutionException - 如果没有任务成功完成

RejectedExecutionException - 如果任务无法安排执行