并发编程-ExecutorCompletionService解析

原文约7300字,阅读约需18分钟。发表于:

1、简单介绍  我们在并发编程中,目前大部分做法都是将任务添加到线程池中,并拿到Future对象,将其添加到集合中,等所有任务都添加到线程池后,在通过遍历Future集合,调用future.get(

ExecutorCompletionService是并发编程中的工具,用于确保最先完成的任务首先被处理,而不考虑任务添加到线程池的顺序。它实现了CompletionService接口,提供了提交任务和检索结果的方法。实现方式是将提交的任务包装在QueueingFuture对象中,并在指定的线程池中执行。一旦任务完成,其QueueingFuture对象将RunnableFuture对象添加到阻塞队列中。可以使用poll或take方法从队列中获取结果。ExecutorCompletionService在任务提交和结果检索的顺序不重要的场景中非常有用。文章中提供了此类场景的示例。在一个实际的例子中,ExecutorCompletionService被用于并行更新一批订单,并实时更新进度。

相关推荐 去reddit讨论