スレッドプールの概念
スレッドプールは全部で4つのカテゴリに分類しました
- fixThreadPool通常のスレッド(伝統的なスレッドプール)
- cacheThreadPoolキャッシュされたスレッドプール
- singleThreadPollシングルスレッドのスレッドプール(シングルトンスレッドプール)
- 定期的にタスクスレッドプールを実行ScheduledThreadPoll
fixThreadPool通常のスレッド(伝統的なスレッドプール)
カーネルスレッドは、カーネルスレッドは、スレッドの最大数、無非コアスレッドで含ま
cacheThreadPoolキャッシュされたスレッドプール
キャッシュ可能なスレッドプール、スレッドの大規模な最大数は、それはここで、各タスクのための新しいスレッドを追加するアイドルスレッドが一定の時間をかけて使用していないとき、それはリサイクルされます、タイムアウトメカニズムです。
singleThreadPollシングルスレッドのスレッドプール(シングルトンスレッドプール)
実行のためにキューに入れ投げ1つのタスクスレッドにより所定の順序の一方を介して、同時処理操作なしに、回復されることはありません唯一のスレッドが、あります。
定期的にタスクスレッドプールを実行ScheduledThreadPoll
定期的な実行スレッドプールのタスク、特定の計画タスクの実行スレッドに合わせて、コアスレッドがあるが、非コアスレッドもありますが、非コアスレッドの大きさも無限です。定期的なタスクを実行するようになって。
複数のスレッドを持つスレッドプールの違い
- スレッドプールは、優れたn個のスレッドの作成を開始するために実行し、これらn個のスレッドがハングは、タスクの到着を待っています。マルチスレッドのタスクは到着時間に作成されたタスクを実行した後だった、と。
- スレッドプールのスレッドはスレッドの実行後に回収されることはありません、スレッドはキューで待機していきます。各タスクが完了した後、マルチスレッドのプログラムでは、スレッドを回復します。
- スレッドプールは、マルチスレッドに対して効率がはるかに高くなるので、良いを作成するからです。
- これは、スレッドプールの高い同時実行した場合にも良好な性能を持っている、ハングアップすることは容易ではありません。状況を作成するスレッドの数よりでのマルチスレッド、ハングアップするのは簡単です。