Java がスレッド プールを作成する 4 つの方法は次のとおりです: 1. newCachedThreadPool はキャッシュ可能なスレッド プールを作成します; 2. newFixedThreadPool は固定長のスレッド プールを作成します; 3. newScheduledThreadPool は固定長のスレッド プールを作成します。
Java は、Executor を通じて 4 つのスレッド プールを提供します:
newCachedThreadPool は、キャッシュ可能なスレッド プールを作成します。スレッド プールの長さが処理の必要性を超える場合、アイドル状態のスレッドを柔軟にリサイクルします。アイドル状態のスレッドをリサイクルする方法がない場合は、新しいスレッドを作成します。
newFixedThreadPool は、同時スレッドの最大数を制御できる固定長のスレッド プールを作成します。超過したスレッドはキューで待機します。
newScheduledThreadPool は、スケジュールされた定期的なタスクの実行をサポートする固定長のスレッド プールを作成します。
newSingleThreadExecutor は、タスクの実行に一意のワーカー スレッドのみを使用するシングル スレッド スレッド プールを作成し、すべてのタスクが指定された順序 (FIFO、LIFO、優先順位) で実行されるようにします。
詳細については、ブロガーのブログ「Java 同時プログラミング: スレッド プールの使用」を参照してください。
1.newCachedThreadPool ここでのスレッド プールは無限です。スレッドがタスクを完了すると、このスレッドは次のことができます。新しいスレッドを作成する代わりに、割り当てられるタスクを完了します。
public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } }
2.newFixedThreadPool
public static void main(String[] args) { ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
3.newScheduledThreadPoo
public static void main(String[] args) { ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); for (int i = 0; i < 10; i++) { scheduledThreadPool.schedule(new Runnable() { public void run() { System.out.println("delay 3 seconds"); } }, 3, TimeUnit.SECONDS); } }
4.newSingleThreadExecutor はスレッド タスクを順番に実行します。ただし、単一のスレッドとは異なり、このスレッド プールは 1 つのスレッドにのみ存在できます。 、このスレッドが終了した後、別のスレッドが構成されます
public static void main(String[] args) { ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int index = i; singleThreadExecutor.execute(new Runnable() { public void run() { /* System.out.println(index);*/ try { System.out.println(index); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
推奨チュートリアル: "java チュートリアル"
以上がJavaでスレッドプールを作成する4つの方法とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。