2014-02-14 29 views
0

有没有办法让一个不断更新的线程池,并检查是否有提交的可调用结束并获得该值?一个ExcutorService允许你提交一堆线程,然后得到可调用的结果,但是如果你不知道有多少可以被提交的调用或者你想不断地提交可调参数呢?如何获得任何完成的可调用的结果?

ThreadPoolExecutor听起来像我想要的,但是这只能在可运行列表上工作,我需要能够从线程中获取结果。

就我而言,订单无关紧要。我想不断地将可调参数添加到某种队列中,然后在进入时用这些结果做一些事情。这可以完成吗?

回答

2

我不是100%确定我了解您的要求,但我认为您可以使用ExecutorCompletionService

该类包装的遗嘱执行人,您可以使用submit添加任务,并takepoll检索下一个完成任务。如果还没有完成的任务,take将阻塞,直到一个任务完成。

+0

谢谢,这看起来像我在找什么。 – tomsrobots

相关问题