スレッド プールは、タスクの実行に使用できる、事前にインスタンス化された再利用可能なスレッドのグループです。タスクが送信されると、そのタスクはプール内のアイドル状態のスレッドに割り当てられます。すべてのスレッドがビジーの場合、タスクはスレッドが使用可能になるまでキュー内で待機します。
スレッド プールにはいくつかの利点があります:
タスクをスレッド プールに送信すると、次の手順が実行されます:
スレッド プールは、Web サーバーでのリクエストの処理やジョブのバッチの処理など、多数の短期間のタスクを管理する必要があるシナリオで特に役立ちます。
Java は、java.util.concurrent パッケージでいくつかの組み込みスレッド プール実装を提供します。最も一般的に使用されるのは ExecutorService です。 Java でスレッド プールを作成して使用する方法を見てみましょう。
Java でスレッド プールを作成するには、Executors クラスを使用できます。このクラスは、さまざまなタイプのスレッド プールを作成するためのさまざまなメソッドを提供します。
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExample { public static void main(String[] args) { // Create a fixed thread pool with 5 threads ExecutorService executorService = Executors.newFixedThreadPool(5); for (int i = 0; i2.2 スレッドプールの種類
Java は、さまざまなシナリオ向けに設計されたいくつかのタイプのスレッド プールを提供します。
固定スレッドプール : 固定数のスレッドを作成します。すべてのスレッドがビジー状態の場合、タスクはキューに入れられます。
ExecutorService fixedPool = Executors.newFixedThreadPool(10);キャッシュされたスレッド プール : 必要に応じて新しいスレッドを作成しますが、利用可能な場合は以前に構築されたスレッドを再利用します。多くの短期間のタスクの実行に適しています。
ExecutorService cachedPool = Executors.newCachedThreadPool();Single Thread Executor: タスクを順番に実行する単一のワーカー スレッドを作成します。
ExecutorService singlePool = Executors.newSingleThreadExecutor();スケジュールされたスレッド プール: 指定された遅延後または定期的にコマンドを実行するようにスケジュールできるスレッド プールを作成します。
ScheduledExecutorService scheduledPool = Executors.newScheduledThreadPool(5);2.3 例: 固定スレッド プールのデモ
この例では、5 つのスレッドを持つ固定スレッド プールが作成されます。 10 個のタスクをプールに送信します。プールは、これらのタスクを使用可能なスレッドに割り当てます。すべてのスレッドがビジーの場合、タスクはキュー内で待機します。
期待される出力:
Task 0 is being executed by pool-1-thread-1 Task 1 is being executed by pool-1-thread-2 Task 2 is being executed by pool-1-thread-3 Task 3 is being executed by pool-1-thread-4 Task 4 is being executed by pool-1-thread-5 Task 5 is being executed by pool-1-thread-1 Task 6 is being executed by pool-1-thread-2 Task 7 is being executed by pool-1-thread-3 Task 8 is being executed by pool-1-thread-4 Task 9 is being executed by pool-1-thread-52.4 スレッド プールを使用するためのベスト プラクティス
Java のスレッド プールは、タスクを効率的に管理および実行するための堅牢な方法を提供します。固定されたスレッドのセットを再利用することにより、オーバーヘッドが削減され、マルチスレッド アプリケーションのパフォーマンスが向上します。 Web リクエストの処理、バックグラウンド ジョブの実行、並列計算の実行のいずれの場合でも、スレッド プールは Java 同時実行ツールキットの重要なツールです。
ご質問がありますか?以下のコメント欄に書き込んでください。
投稿の詳細はで読む: Java スレッド プール: スレッドを効率的に管理する方法
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3