スレッド プールは、処理中にタスクをキューに追加し、スレッドの作成後にこれらのタスクを自動的に開始するマルチスレッド処理の形式です。スレッド プールのスレッドはバックグラウンド スレッドです。各スレッドはデフォルトのスタック サイズを使用し、デフォルトの優先順位で実行され、マルチスレッド アパートメント内にあります。
スレッドがマネージ コード内でアイドル状態 (イベントの待機中など) にある場合、スレッド プールは別のスレッドを挿入します。ワーカー スレッドを使用して、すべてのプロセッサをビジー状態に保ちます。
すべてのスレッド プールのスレッドが常にビジー状態であり、キューに保留中の作業が含まれている場合、スレッド プールはしばらくしてから別のワーカー スレッドを作成しますが、スレッドの数が最大値を超えることはありません。最大数を超えるスレッドはキューに入れることができますが、他のスレッドが終了するまで開始されません。 (推奨学習:
java コースJava での 4 つのスレッド プールの使用:
Java はエグゼキュータを通じて 4 つのスレッド プールを提供します
newCachedThreadPool は、キャッシュ可能なスレッド プールを作成します。スレッド プールの長さが処理の必要性を超えた場合、アイドル状態のスレッドは柔軟にリサイクルできます。リサイクルがない場合は、新しいスレッドが作成されます。
newFixedThreadPool は、同時スレッドの最大数を制御できる固定長のスレッド プールを作成します。超過したスレッドはキューで待機します。
newScheduledThreadPool は、スケジュールされた定期的なタスクの実行をサポートする固定長のスレッド プールを作成します。
newSingleThreadExecutor は、タスクの実行に唯一の作業スレッドのみを使用するシングルスレッド スレッド プールを作成し、すべてのタスクが指定された順序 (FIFO、LIFO、優先順位) で実行されるようにします。
キャッシュ可能なスレッド プールを作成します。スレッド プールの長さが処理の必要性を超えた場合、アイドル状態のスレッドを柔軟にリサイクルできます。リサイクルして、新しいスレッドを作成します。サンプルコードは次のとおりです:
package test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExecutorTest { public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(index * 1000); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } } }
以上がJavaのスレッドプールとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。