タスクのバッチを挿入したいだけです。ThreadPoolExecutorを無制限のキューで作成する方法。キュー内のタスクを拒否したりタイムアウトさせたりする方法はありません。
答えて
@virsirは、
あなたは、インスタンスThreadPoolExecutor
を作成する方法について、具体的尋ねたのです。しかし、私はExecutorService
インターフェイスを実装する任意のクラスを持つことが大丈夫だろうと思っています。 ThreadPoolExecutor
はExecutorService
を実装しているので、これは大きな飛躍ではありません。
java.util.concurrent.Executors
クラスは、いくつかの一般的な状況を処理するスレッドプールを作成するための便利な機能を提供します。
私は最近、いくつかの異なるスレッドプールを作成するプロジェクトでExecutors.newFixedThreadPool()
を使用しました。 ExecutorServiceを実装するオブジェクトを返します。私は何万ものRunnableインスタンスを10スレッドのプールに提出するのに問題はなく、非常にスムーズに動作しました。 Java 5のドキュメント当たり
、この方法は:
は 共有アンバウンド形式のキューなしで動作するスレッドの 固定セットを再利用するスレッドプールを作成します。シャットダウンの前に の実行中にエラーが発生して終了したスレッド がある場合は、 の新しいスレッドが必要になった場合は、 を実行して以降のタスクを実行します。
このメソッドは「無制限のキュー」を作成すると言われているため、送信できるタスクの数に人為的な制限はないはずです。
キューはジョブを削除しません。特定の時点で実行されるスレッドの数は限られています。残りのジョブは、他のスレッドが終了するときに次の使用可能なスレッドを取得するまでキューされます。
ジョブの実行順序は、使用しているキューによって異なります。プライオリティキュー、FIFOキューのetc ...
境界キュー( 'ArrayBlockingQueue'またはバウンド' LinkedBlockingQueue')を使用すると、タスクをサブミットすると、デフォルトの拒否ハンドラによって 'RejectedExecutionException'がスローされる可能性があります。これは、スレッドの最大数がすでに作成されていて、すべてが満杯だった場合に発生します。 'DiscardPolicy'や' DiscardOldestPolicy'が拒否ハンドラとして使われた場合、明らかに投稿が失われる可能性があります。しかし、一般的に、API開発者は、デフォルトの応答が静かに仕事を失うことではないことを確認しようとしたように見えます。 – GargantuChet
- 1. 無制限のキューを持つThreadPoolExecutorは新しいスレッドを作成しません。
- 2. executorキューにタスクを戻す方法はありますか
- 3. キューはテンプレートではありません
- 4. uwpでマスクされたテキストボックスを作成する方法はありません
- 5. textareaは無制限で、制限はありません
- 6. 将来のタスクはThreadPoolExecutorから拒否されました
- 7. oracleプロシージャを作成する方法はありますが、格納する方法はありません
- 8. アプリケーションが中断した場合、ActiveMQでキュー内のメッセージを回復する方法はありますか?
- 9. マルチを制限する方法 - パブリッシャーはNServiceBusを使用して同じキューをリッスンできませんか?
- 10. 2つの一時キューだけを使用してキューをリバースする方法はありますか?
- 11. checkstyleレポートを生成するためのコマンドラインスクリプト(Antタスクではありません)の記述方法は?
- 12. iphoneアプリは拒否されましたが通知メールはありません
- 13. 印刷キューを作成し、C#でキューにフォームを追加する方法は?
- 14. JQueryでは、期限が切れた後にエフェクトをキューに入れる方法がありますか?
- 15. Deviseはログインを拒否しましたが、エラーはありません
- 16. xmlノード内でコメントする方法はありません。
- 17. Androidアプリケーションを終了させる方法はありません
- 18. モバイルビューポートのサイズを制限する方法はありますか?
- 19. モンゴースの作成方法には応答がありません
- 20. ActiveMQのキュー長を取得する簡単な方法はありますか?
- 21. JQuery:キューよりも良い方法:falseまたはdivラッパー
- 22. デフォルト値で選択リストを作成する方法はありますか?ドロップダウンはありません
- 23. STLを使用せずにキューのキューを作成する
- 24. Guice Grapherを動作させる方法はありますか?
- 25. 無限ループを作成せずにイベントトリガ関数をイベントハンドラから起動する方法はありますか?
- 26. リクエストフォームを作成する方法がわかりません
- 27. 最小/最大キューを実装する方法はありますか?
- 28. MVC3:CA2000 - カーネルを解決する方法はありませんでした。
- 29. VB.NET 2005またはC#.NET 2005でチャートを作成する他の方法はありませんか?
- 30. キューのメモリを解放するには?鉱山は無料ではありません
確かにExecutors.newFixedThreadPool()の+1です。うまく動作します – MJB
これは素晴らしいですが、もし私が並べ替えるためにキューを必要とする?ジョブの優先順位に基づいてジョブを並べ替える必要があるからです。 –
@MuhammadGelbana、それはもっと複雑な答えでやや異なる質問です。 [この回答](http://stackoverflow.com/questions/3198660/java-executors-how-can-i-set-task-priority)を参照するか、Webで「Java executor priority queue」を検索してください。 – GargantuChet