2017-10-11 1 views
0

私はExecutorServiceを10のタスク用に持っています。 24のタスク。最初の10のタスクはすぐに追加できますが、いくつかのタスクが完了したらもう1つ追加します。ExecutorServiceは動的にタスクを追加します

この動作を実装するためのベストプラクティス、共通のアプローチまたはパターンはありますか?

+0

タスクを追加します。あなたの場合は、すべての24のタスクを追加してください – mlecz

答えて

0

実行者は、スレッドを処理するためにスレッドが使用可能になるのを待っている間、タスクを維持するためにキュー1を持っています。あなたは何か特別なことをする必要はありません、あなたが好きなようにエグゼキュータにタスクを提出してください。

¹これは厳密には当てはまりません。キューは制限されている可能性があります。しかし、一般的な使用例(特に明記されている場合を除きます)では、キューは無制限なので、気にする必要はありません。

+0

返信ありがとう、Kayaman。私は私の質問では間違っていたと思います。私は、すべてのプロセスを即座に追加したくないので、fixedThreadPool(10)を使用するかどうかを言いたいと思います。私が理解するように、この場合、10個のタスクがすべて終了した後にのみ、新しい10個のプロセスが追加されます。私は正しいですか? – TechnoPriest

+0

いいえ、それはあなたが10スレッドを実行していることを意味し、利用可能なタスクを処理します。エグゼキュータに10個以上のタスクが提出されている場合、いくつかのタスクはキュー内で待機し、スレッドはその前のタスクで終了し、キューから次のタスクを取得します。ここで「プロセス」という言葉を使わないでください。誤解を招くことがあります。 – Kayaman

関連する問題