ホームページ  >  記事  >  Java  >  Javaスレッドプールとは何ですか

Javaスレッドプールとは何ですか

(*-*)浩
(*-*)浩オリジナル
2019-12-04 09:28:192932ブラウズ

Javaスレッドプールとは何ですか

これは、スレッド プールとは何か、種類、役割は何ですか? #)

スレッド プールはマルチスレッド処理の形式です。タスクは処理中にキューに追加され、スレッドの作成後にこれらのタスクが自動的に開始されます。各スレッドはデフォルトのスタック サイズを使用して、デフォルトの優先順位で実行されます。マルチスレッド アパートメントでは、マネージ コード内でスレッドがアイドル状態の場合、スレッド プールは別のワーカー スレッドを挿入して、すべてのプロセッサをビジー状態に保ちます。

すべてのスレッド プールが常にビジー状態であっても、キューに保留中の作業が含まれている場合、一定期間経過してもスレッド プールがワーカー スレッドの最大数を超えることはありません。最大数を超えるスレッドはキューに入れることができますが、他のスレッドが終了するまで開始することはできません。

Java のスレッド プールの最上位インターフェイスは Executor です。Executor はスレッド プールではなく、スレッドを実行するための単なるツールであり、実際のスレッド プールは ExecutorService です。

Java のスレッド プールとは何ですか?

1.newCachedThreadPool はキャッシュ可能なスレッド プール プロセスを作成します

2.newFixedThreadPool は固定長のスレッド プールを作成します

3.newScheduledThreadPool は固定長のスレッド プールを作成します

4.newSingleThreadExecutor はシングルスレッド スレッド プールを作成します

#次は 1 つずつ分析されます:

newCachedThreadPool、

可変のスレッド数を持つスレッド プールであり、スレッドの最大数は Integer.MAX_VALUE です。この数は非常に大きいです。キャッシュ可能なスレッド プールです。スレッド プールの長さが処理の必要性を超えた場合、アイドル状態のスレッドは柔軟に変更できます。リサイクルがない場合は、新しいスレッドを作成します。ただし、スレッド プール内のアイドル スレッドにはタイムアウト制限があり、このタイムアウトは 60 秒です。アイドル スレッドが 60 秒を超えると、スレッドはリサイクルされます。 execute を呼び出すと、以前に構築されたスレッドが再利用されます (スレッドが使用可能な場合)。このタイプのスレッド プールは、時間のかからない多数のタスクの実行に適しており、スレッド プール全体がアイドル状態になると、スレッド プール内のスレッドはタイムアウトして停止します。

newFixedThreadPool

指定した数のワーカー スレッドを持つスレッド プールを作成します。ワーカー スレッドは、タスクが送信されるたびに作成されます。スレッドがアイドル状態の場合、スレッドがアイドル状態になるまでリサイクルされません。プールが閉じられ、ワーカー スレッドの数がスレッド プールの初期最大数に達すると、送信されたタスクはプール キューに格納されます (サイズ制限なし)。 newFixedThreadPool にはコア スレッドのみがあり、これらのコア スレッドはリサイクルされないため、外部リクエストにより迅速に応答できます。

newScheduledThreadPool

コア スレッドの数は固定ですが、非コア スレッドの数は無制限で、非コア スレッドがアイドル状態になるとすぐにリサイクルされるスレッド プールを作成します。コマンドは、指定された遅延の後に、または定期的に実行されるようにスケジュールできます。このタイプのスレッド プールは主に、スケジュールされたタスクや一定期間で繰り返し実行されるタスクを実行するために使用されます。

newSingleThreadExecutor

このタイプのスレッド プールには、内部にコア スレッドが 1 つだけあり、無制限のキューで実行されます。これにより、これらのタスク間のスレッド同期の問題に対処する必要がなくなります。すべてのタスクは同じスレッド上で順番に実行され、一度に複数のスレッドをアクティブにすることはできません。

以上がJavaスレッドプールとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。