プログラムスレッドはあまり使用し、無制限に作成したスレッドを避けるために、プログラムのパフォーマンスと安定性が低下している原因になりますスレッドプールの技術を。
スレッドプール内のスレッドの数は、実行タスクを完了した後、スレッドを実行するスレッドプールのスレッドに実行可能なタスクオブジェクトにパッケージを入れて、新しいタスクがあり、限られている、あなたはすぐに次の作業に行くことができます。
プール内のスレッドの数は、固定サイズであってもよく、それは弾性的に伸縮性であってもよいです。
Javaおよび請負:
JDK5.0 以降のバージョンは、プロパティの最も高度な並行処理機能を導入しているjava.util.concurrentのパッケージ、マルチスレッドプログラミング、現代のマルチプロセッサ、マルチコアシステムのパワーをフルに活用するために設計されて大規模な同時実行アプリケーションの準備。主にそれが含まれている原子量、同時コレクション、シンクロナイザ、リエントラントロック、強力なサポートを提供し、スレッドプールの構造を。
スレッドプール 5種類作成しました:
1、シングルスレッド実行者スレッドプールの一つのスレッドのみなので、すべてのタスクの実行順序が提出され、
代码: Executors.newSingleThreadExecutor()
2、キャッシュされたスレッドプール:スレッドプールのスレッドが多くを同時に実行する必要がある必要があり、することが可能な古いスレッド新しいタスクの実行を再トリガし、スレッドChaoguo場合 60 秒を実行していなかった、それが終了すると、プールから削除されます、
コード: Executors.newCachedThreadPool()
3、固定スレッドプール:なしタスクの実行がない場合、スレッドが待機する、スレッドプール内のスレッド数が固定されています、
コード: Executors.newFixedThreadPool(4)
コンストラクタパラメータ 4は、スレッドプールのサイズであり、あなたが任意に設定することができ、そしてすることができるCPU のコア一貫したCPUの数が取得コアINT cpuNums = Runtime.getRuntime()availableProcessors(の数 );
4、スケジュールスレッドプール:スレッドプールで実行するタスクをスケジュールするために使用が直接実行されないことがあり、一度実行する頻度... 戦略タイプ
コード: Executors.newScheduledThreadPool()
5、シングルスレッドスケジュールプール:一つだけのスレッドがタスクをスケジュールするために使用される割り当てられた時間内に、コードを: Executors.newSingleThreadScheduledExecutor()