有没有办法创建一个不断更新的线程池,并检查是否有任何提交的可调用对象已完成并获取该值?ExcutorService 允许您提交一堆线程,然后稍后获得可调用结果,但是如果您不知道将提交多少个可调用对象或想要持续提交可调用对象怎么办?
ThreadPoolExecutor 听起来像我想要的,但这只能适用于可运行列表,我需要能够从线程中获取结果。
就我而言,顺序无关紧要。我想不断将可调用对象添加到某种队列中,然后在这些结果进入时对这些结果执行一些操作。这能做到吗?
我不是 100% 确定我理解您的要求,但我认为您可以使用 ExecutorCompletionService
.
此类包装一个执行器,您可以使用submit
来添加任务,并take
或poll
来检索下一个已完成的任务。如果尚未完成任务,take
将阻止,直到一个任务完成。