返回介绍

java.util.concurrent 接口 CompletionService<V>

发布于 2019-10-04 09:51:41 字数 3994 浏览 961 评论 0 收藏 0

所有已知实现类:
ExecutorCompletionService

public interface CompletionService<V>

将生产新的异步任务与使用已完成任务的结果分离开来的服务。生产者 submit 执行的任务。使用者 take 已完成的任务,并按照完成这些任务的顺序处理它们的结果。例如, CompletionService 可以用来管理异步 IO ,执行读操作的任务作为程序或系统的一部分提交,然后,当完成读操作时,会在程序的不同部分执行其他操作,执行操作的顺序可能与所请求的顺序不同。

通常, CompletionService 依赖于一个单独的 Executor 来实际执行任务,在这种情况下, CompletionService 只管理一个内部完成队列。 ExecutorCompletionService 类提供了此方法的一个实现。


方法摘要
Future<V>poll()

检索并移除表示下一个已完成任务的 Future,如果不存在这样的任务,则返回 null

Future<V>poll(longtimeout, TimeUnitunit)

检索并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则将等待指定的时间(如果有必要)。

Future<V>submit(Callable<V>task)

提交要执行的值返回任务,并返回表示挂起的任务结果的 Future。

Future<V>submit(Runnabletask, Vresult)

提交要执行的 Runnable 任务,并返回一个表示任务完成的 Future,可以提取或轮询此任务。

Future<V>take()

检索并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则等待。

方法详细信息

submit

Future<V> submit(Callable<V>task)
提交要执行的值返回任务,并返回表示挂起的任务结果的 Future。在完成时,可能会提取或轮询此任务。
参数:
task - 要提交的任务
返回:
一个表示挂起的任务完成的 Future
抛出:
RejectedExecutionException - 如果不能安排要执行的任务
NullPointerException - 如果任务为 null

submit

Future<V> submit(Runnabletask,
                 Vresult)
提交要执行的 Runnable 任务,并返回一个表示任务完成的 Future,可以提取或轮询此任务。
参数:
task - 要提交的任务
result - 要返回的已成功完成任务的结果
返回:
一个表示挂起的任务完成的 Future,其 get() 方法将返回完成时给出的结果值
抛出:
RejectedExecutionException - 如果不能安排要执行的任务
NullPointerException - 如果任务为 null

take

Future<V> take()
               throws InterruptedException
检索并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则等待。
返回:
表示下一个已完成任务的 Future
抛出:
InterruptedException - 如果在等待时被中断。

poll

Future<V> poll()
检索并移除表示下一个已完成任务的 Future,如果不存在这样的任务,则返回 null
返回:
表示下一个已完成任务的 Future;如果不存在这样的任务,则返回 null

poll

Future<V> poll(longtimeout,
               TimeUnitunit)
               throws InterruptedException
检索并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则将等待指定的时间(如果有必要)。
参数:
timeout - 放弃之前需要等待的时间长度,以 unit 为时间单位
unit - 确定如何解释 timeout 参数的 TimeUnit
返回:
表示下一个已完成任务的 Future;如果等待了指定时间仍然不存在这样的任务,则返回 null
抛出:
InterruptedException - 如果在等待时被中断。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文