首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建使用主线程池的单独线程池

如何创建使用主线程池的单独线程池
EN

Stack Overflow用户
提问于 2015-01-29 18:01:53
回答 1查看 181关注 0票数 0

我正在使用spring ThreadPoolExecutorFactoryBean。它是一个主线程池。在某些情况下,我需要创建CompletionService,它可以确保线程按完成顺序排列。

我的代码片段:

代码语言:javascript
复制
ExecutorService pool = Executors.newFixedThreadPool(list.size());

CompletionService<T> completionService = new ExecutorCompletionService<T>(pool);

问题是我不想在这里创建固定的线程池,而是使用主线程轮询,只是为了避免创建太多的线程。

当然,我不能将主线程池传递给完成服务,因为当我从完成服务completionService.take()中获取值时,我会得到完全不相关的线程。

也许你可以帮我找到一种方法,如何从主线程池创建某种固定的线程池,并将其传递给完成服务。

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2015-01-29 23:21:33

这里有一个误解。CompletionService只是接收任务,异步执行它们,并按照任务完成的顺序提供结果。CompletionService#take()返回已提交任务的结果,而不是线程的结果。

ExecutorCompletionService将任务执行委托给Executor,后者可以很好地执行从其他来源提交的任务。因此,按照您的代码示例所示进行操作应该没有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28211795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档