有没有办法使线程池不断更新,并检查是否有任何已提交的可调用对象已完成并获得该值? ExcutorService允许您提交一堆线程,然后在以后获取可调用结果,但是如果您不知道将要提交多少个可调用对象,或者想要连续提交可调用对象,该怎么办?

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

就我而言,顺序并不重要。我想连续地将可调用对象添加到某种队列中,然后对这些结果进行处理。这可以实现吗?

最佳答案

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

此类包装了一个Executor,您可以使用submit添加任务,并使用takepoll检索下一个已完成的任务。如果还没有完成的任务,take将阻塞直到一项任务完成。

09-12 12:18