其他重要方法
AbstractExecutorService 接口
关于 AbstractExecutorService
接口,我们介绍下述方法。
-
invokeAll (Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
:
当作为参数传递的 Callable 任务列表中的所有任务完成执行,或者执行时间超出了第二、第三个参数指定的时间范围时,该方法返回一个与该 Callable 任务列表相关联的 Future 对象列表。 -
invokeAny (Collection<? Extends Callable<T>> tasks, long timeout, TimeUnit unit)
:
当作为参数传递的 Callable 任务列表中的任务在超时(由第二和第三个参数指定的期限)之前完成其执行并且没有抛出异常时,该方法返回 Callable 任务列表中第一个任务的结果。
如果超时,那么该方法抛出一个 TimeoutException 异常。
CompletionService 接口
关于 CompletionService
接口,我们介绍下述方法。
-
poll()
方法:
我们用到了该方法带有两个参数的版本,不过该方法还有一个不带参数的版本。
从内部数据结构来看,该版本检索并且删除自上一次调用 poll() 或 take() 方法以来下一个已完成任务的 Future 对象。
如果没有任何任务完成,执行该方法将返回 null 值。 -
take()
方法:
该方法和前一个方法类似,只不过如果没有任何任务完成,它将休眠该线程,直到有一个任务执行完毕为止。