Advertisement

Java并发编程:ExecutorCompletionService解析

阅读量:

一、什么场景下使用ExecutorCompletionService

在项目开发过程中,若采用线程池机制来执行任务,并希望在任务处理结束后获取返回值以进行后续逻辑操作,此时可以借助ExecutorCompletionService类实现该需求。该类能够在任务执行完毕后,将结果存入可通过take方法访问的队列中,从而支持基于返回值的进一步处理。该类设计精简,具备较高的灵活性,适用于临时处理多个任务组的场景。使用示例如下:
(1)假设有多个用于解决特定问题的求解器实例,每个实例均可返回某种类型的结果Result,并希望以并发方式运行这些求解器,在获得非空结果后执行某些方法中的(Result r)逻辑。此时可采用如下代码实现:

复制代码
      void solve(Executor e,
             Collection<Callable<Result>> solvers)
      throws InterruptedException, ExecutionException {
      CompletionService<Result> ecs
          = new ExecutorCompletionService<Result>(e);
      for (Callable<Result> s : solvers)

全部评论 (0)

还没有任何评论哟~