2017-10-11 462 views
0

我有10个任务的ExecutorService,并且我想处理24个任务。我可以立即添加前10个任务,但是当某个任务完成时,我想添加另一个任务。ExecutorService动态添加任务

是否有一些最佳实践,常见方法或模式来实现此行为?

+0

需要时添加任务。在你的情况下,添加全部24个任务 – mlecz

回答

0

执行者拥有队列¹用于在等待线程可用于处理它们时保留任务。你不需要做任何特别的事情,只要你随便提交任务给执行者。

¹这并不严格,队列可能有限。然而,在一般使用情况下(除非另有说明),队列是无限的,您无需担心。

+0

感谢您的回复,Kayaman。我认为在我的问题上是不准确的。我想说如果我想使用fixedThreadPool(10),因为我不想直接添加所有进程。据我所知,在这种情况下,只有在所有10个任务完成后才会添加新的10个进程。我对么? – TechnoPriest

+0

不,这意味着你有10个线程在运行,他们将处理任何可用的任务。如果提交给执行程序的任务超过10个,则某些任务将在队列中等待一个线程完成其前一个任务,并从队列中检索下一个任务。不要在这里使用“进程”这个词,这是非常具有误导性的。 – Kayaman