ホームページ  >  記事  >  Java  >  Javaでスレッドプールを作成する4つの方法とは何ですか

Javaでスレッドプールを作成する4つの方法とは何ですか

hzc
hzcオリジナル
2020-07-04 15:44:4311200ブラウズ

Java がスレッド プールを作成する 4 つの方法は次のとおりです: 1. newCachedThreadPool はキャッシュ可能なスレッド プールを作成します; 2. newFixedThreadPool は固定長のスレッド プールを作成します; 3. newScheduledThreadPool は固定長のスレッド プールを作成します。

Javaでスレッドプールを作成する4つの方法とは何ですか

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。