スレッドプールのコア引数と実装プロセス

スレッドプール

スレッドプールの種類

newFixedThreadPool

これらのスレッドを実行するために、共有アンバウンド形式のキューにスレッドの固定数を再利用するスレッドプールを作成します。大型の任意の時点で
過半数にnthreadsスレッドがアクティブな処理タスクになります。あなたはすべてのスレッドがアクティブな場合、追加のタスクを送信した場合
、その後の前に使用可能なスレッドがあり、追加のタスクがキュー内で待機します。何らかのの故障に閉鎖する前に、実行中の場合は
、スレッドを終了する(必要な場合)、その後、新しいスレッドでそれを置き換えるには、後続のタスクを実行します。スレッドでは、それが明示的にクローズされる
前に、スレッドプールは常に存在します。

newCachedThreadPool

あなたは、新しいスレッドを作成するスレッドプールを作成する必要があるかもしれませんが、利用可能な場合、彼らは以前に構築のスレッドを再利用します。実行のための
短期プログラムの非同期タスクの多くの点では、これらのプールは、典型的には、プログラムのパフォーマンスが向上します。実行するための呼び出しは、以前に構築再利用します
(スレッドが利用可能な場合)のスレッドを。既存のスレッドが使用できない場合は、新しいスレッドが作成され、プールに追加されます。終了し、
キャッシュから60秒間使用されていないこれらのスレッドを削除します。そのため、長い間アイドル状態のスレッド・プールは、任意の情報を使用しません残っ
たソースを。

newScheduledThreadPool

指定された遅延時間後に実行するコマンドをスケジュールすることができ、または定期的に実行するスレッドプールを作成します。

newSingleThreadExecutor

一つだけのスレッドプールのスレッドを返します(例外が発生した場合、または)、スレッドプールのスレッドが実行を継続するために元のスレッドを置き換えるために、スレッドの死の後に再起動することができます!

コアのパラメータ

corePoolSize

スレッドのコアの数は、このパラメータは、タスクを実行する、カーネル・スレッドの数に達し、単にタスクを加えてスレッド0のコア数であるスレッドプールを、作成し、自分のによって定義され、スレッドプール内にコアを保持するスレッドの数を示しその後、設定されたスレッドのコア数で推移しているスレッドプール内のスレッドのコア数。

maximumPoolSize

スレッドの最大数は、このパラメータは、保持することができるスレッドプール内のスレッドの最大数を定義します。ジョブがスレッドプールに提出された場合、スレッドの数はスレッドのコア数に達すると、タスクキューがいっぱいの場合、タスクを追加するときに達していない場合は、タスクがもはやキューは、その後のチェックは、タスクは、スレッドの最大数に達していないことができるかどうか、新しいスレッドを作成し、タスクは、そうでない場合は、ポリシーを拒否します。

keepAliveTimeが

(スレッドの最大数 - スレッドのコア数)スレッド生存時間は、スレッドプールのタスクを実行した後、スレッドの一部、合計数のスレッド数マイナススレッドの数コア糸の一部がそのスレッドプール内のスレッドのコアの数よりも大きいです生存期間。

ワークキュー

クッション効果のために使用するタスクキューは、スレッド・プールにコアスレッドに提出されたタスクの数が十分でない場合には、コアスレッドのすべてのタスクを実行され、タスクがコアスレッドが実行するのを待つ、タスクキューに保存されます。主なパラメータは、主にキャッシュのタスクに使用されるパラメータ、の作品、カーネルスレッドの数がその職務を行っているです。

プロセス

フローチャート

ここに画像を挿入説明

コーミングの過程

ユーザーは、コア、スレッド・プールが満杯でない場合、完全な、その後のスレッド、タスク、作成、確認するためにジョブを投入
いっぱいあるし、タスクをキューに追加され、バッファのキューへのフルを、キューバッファがフルでない、
最大スレッド・プールが満杯であるか否かを判断します、完全なスレッドを作成していない、使命、戦略がいっぱい拒否されます

リリース8元の記事 ウォンの賞賛0 ビュー216

おすすめ

転載: blog.csdn.net/weixin_44048746/article/details/104484857