私は10,000スレッドを実行しなければならない状況があります。明らかに、1台のマシンはこれらの多くのスレッドを並行して実行することはできません。開始時に特定の数のスレッドを実行するようにスレッドプールに依頼する方法はありますか?スレッドが終了するとすぐに、残りのスレッドは処理を開始できますか?Executor pool limit一度にスレッド数を制限します
答えて
Executors.newFixedThreadPool(nThreads)
あなたが探している可能性が最も高いものです。一度に実行されるスレッドの数は、指定されたスレッドの数だけになります。そして、1台のマシンで同時に10,000スレッドを実行することはできませんが、同時に実行することは可能です。各スレッドのリソース集中度に応じて、 Executors.newCachedThreadPool()
を使用する方が効率的です。必要な数のスレッドが作成され、終了したスレッドが再利用されます。
この使用例です。ブロッキングキューを持つThreadPollExecuterを持つことができます。 http://howtodoinjava.com/core-java/multi-threading/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/このチュートリアルでは非常にうまく説明しています。
スレッドのグループに対して10,000のタスクを実行するように思えます。比較的簡単な方法は、リストを作成し、すべてのタスクをリストに追加し、それらをRunnableにラップすることです。次に、コンストラクタでリストを受け取り、リストのRunnableをポップして実行するクラスを作成します。このアクティビティは、何らかの方法で同期させる必要があります。リストが空の場合、クラスは終了します。このクラスを使用していくつかのスレッドを開始します。彼らはリストを焼き尽くして停止するでしょう。あなたのメインスレッドは、リストの長さを監視することができます。
そのクラスは既に存在します。それは 'java.util.concurrent.ThreadPoolExecutor'と呼ばれます。 –
- 1. executor service pool(JAVA)からスレッドを待っているジョブの数を調べる
- 2. asp.net:dot net platform 3.5は、制限がある場合、一度に実行されるスレッドのスレッド数に制限を課しますか?
- 3. ExecutorServiceのスレッドをどのように制限しますか?
- 4. gdbデバッグを一度に1つのスレッドに制限する方法
- 5. ミューテックスを使用して一度に実行するスレッドの数を制限する2
- 6. レコードを制限しないyii \ db \ Query :: limit()関数 - Yii2
- 7. IE6制限ボタンクリックして一度だけ
- 8. スレッドの数を制限する方法
- 9. Groovyのスレッド数を制限する
- 10. スレッド数を制限するCompojure spawn
- 11. ExecutorServiceを使用して作成されるスレッドの最大数に制限がありますか
- 12. Springブートサービスでスレッド数を制限して実行します。
- 13. Cognito User Poolユーザをシングルデバイスに制限する
- 14. スレッド(タスク)WebAPIの制限(または一般的に)
- 15. Pythonスレッド数の制限を許可
- 16. X-Rate-Limitには2つの制限がありますか?
- 17. EHCache JMSレプリケーションの制限スレッド数?
- 18. C#TPL for loop - スレッド数の制限
- 19. 実際の制限なしでMySQLのLIMITを使用する
- 20. 制限付きiphoneで同じユーザー名とパスワードで複数のログインを一度に制限する方法
- 21. elasticsearchにTransportClientを作成する際のThreadPoolのスレッド数を制限します
- 22. 一度に1つのブランチにプッシュを制限するフック
- 23. 一度に1つのdivにホバー変更を制限する
- 24. AWS Cognito:ユーザーを一度に1つのログインに制限する
- 25. 一度に1つのタイマーをアクティブに制限する
- 26. Apache Spark - ステージ単位の同時スレッド数を制限する
- 27. Javaで複数のスレッドで一度に各スレッドを停止する方法はありますか?
- 28. Executorサービスの従属スレッド - Java
- 29. 「git add -all」は、一度に最大100に制限しますか?
- 30. サブプロセスで一度に実行されるプロセスの数を制限する.Popen
[ThreadPoolExecutor](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html)を見ましたか? – bradimus
これらはスレッドではなく、それらは_tasks_です。スレッドプールは、限られた数のスレッドを使用して無限の数のタスクを実行します。 –
タイトルは "Executor pool"です。 Webで類似のトピックを検索するときに、Javaでスレッドプールを設定する方法を示す記事が見つかりませんでしたか?私は非常に信じがたいことがわかります。 **あなたはどんな研究もしていないようです**。その理由でダウン投票された!! – Andreas