ThreadPoolExecutorソースノート

基本戦略:

1.新しいタスクを提出する際、限り少ないスレッドのコア数よりもスレッド数として、それはすぐに既存のスレッドが動作していない場合でも、彼に新しいスレッドを作成します。

2.プールはどこより多くのスレッドのコアスレッドよりも、時間彼らのKeepAliveTimeの長さの後に仕事は、停止されていない場合。

3.コアよりスレッドの数は、優先順位の要求がキューイングされる場合。

要求がキューに配置することができない場合、スレッドの最大数を超えない限り4は、一般的に、スレッドを作成することを好むだろう。

3つのキューは、アプローチ:

1.あなたがキューに置くことができない場合は、直接スレッドを追加します。これは、スレッドのデフォルトの最大数を制限するものではありませんでした。最初のスレッドが依存関係を持っている場合は、この戦略はロックされません。

2.アンバウンド形式のキュー。この場合、コア・スレッドの数よりも多く存在しないであろう。スレッド間の依存関係はありませんについて

3.有界キュー。資源の枯渇を減らすことができます。ビッグキュー小さなプールは、スループット削減、CPUの使用量を削減します。小さなキュー大きなプールは、スループットを低下させる、オーバーヘッドCPU使用率、およびスケジューリングを増加させるであろう。

戦略の4種類のハンドル:

1.デフォルトRejectedExecutionException直接スロー例外。

スレッドの呼び出しは、独自の処理タスクを実行してみましょう2。

3.直接失われたタスクを実行することはできません。

キューの4.フロント、実行しようとする前に、最も直接的失われました、。

5.独自の戦略を定義しますが、特別なケアを必要とすることができます。

=================続け===============

公開された42元の記事 ウォンの賞賛0 ビュー1654

おすすめ

転載: blog.csdn.net/weixin_42504835/article/details/104641293