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)
还没有任何评论哟~
