2017-10-11 463 views
0

我有10個任務的ExecutorService,並且我想處理24個任務。我可以立即添加前10個任務,但是當某個任務完成時,我想添加另一個任務。ExecutorService動態添加任務

是否有一些最佳實踐,常見方法或模式來實現此行爲?

+0

需要時添加任務。在你的情況下,添加全部24個任務 – mlecz

回答

0

執行者擁有隊列¹用於在等待線程可用於處理它們時保留任務。你不需要做任何特別的事情,只要你隨便提交任務給執行者。

¹這並不嚴格,隊列可能有限。然而,在一般使用情況下(除非另有說明),隊列是無限的,您無需擔心。

+0

感謝您的回覆,Kayaman。我認爲在我的問題上是不準確的。我想說如果我想使用fixedThreadPool(10),因爲我不想直接添加所有進程。據我所知,在這種情況下,只有在所有10個任務完成後纔會添加新的10個進程。我對麼? – TechnoPriest

+0

不,這意味着你有10個線程在運行,他們將處理任何可用的任務。如果提交給執行程序的任務超過10個,則某些任務將在隊列中等待一個線程完成其前一個任務,並從隊列中檢索下一個任務。不要在這裏使用「進程」這個詞,這是非常具有誤導性的。 – Kayaman