当前位置:嗨网首页>书籍在线阅读

35-在执行器内分离任务的启动并处理返回结果

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.10 在执行器内分离任务的启动并处理返回结果

正常而言,当使用执行器执行并发任务时,可以提交 Runnable 或是 Callable 任务到执行器,并获取 Future 实例对象来控制任务的执行。但是有可能遇到如下场景:当提交任务给执行器时,使用一个对象来提交,并想在另一个对象中处理返回结果。对于这种情况,Java并发API提供了 CompletionService 类。

CompletionService 类提供了一个方法可提交任务给执行器,并用另一个方法来获取下一个已执行完毕的 Future 实例对象。在内部,它用一个 Executor 对象来提交任务。这种行为的优势是共享一个 CompletionService 对象并将任务发送给执行者,以便其他对象可以处理结果。它的限制性在于,第二个对象只能获取那些执行完毕对象的 Future 对象,因此这些 Future 对象只能用来获取任务执行结果。

本节将介绍如何使用 CompletionService 类来分离执行器中任务的启动和执行返回结果。