ホームページ  >  記事  >  Java  >  Executor マルチスレッド フレームワークの使用方法 (例付き)

Executor マルチスレッド フレームワークの使用方法 (例付き)

不言
不言オリジナル
2018-09-27 14:34:242486ブラウズ

この記事の内容は、Executor マルチスレッド フレームワークの使用方法に関するものです (例付き)。必要な方は参考にしていただければ幸いです。

JDK1.5 では、JAVA は、マルチスレッド アプリケーションの開発をより便利にするためにカプセル化されたフレームワーク (Executor) を開始しました。従来の Thread クラスと比較して、Executor はより便利で、より優れたパフォーマンスを備えています。管理が簡単で、スレッド プールをサポートします。一般に、クローラーを開発する場合、クローラーの効率を向上させるためにマルチスレッドが必要であり、Executor は非常に良い選択肢です。

共通インターフェイス:

1) 固定数のスレッドでスレッド プールを作成します:

public static ExecutorService newFixedThreadPool(int nThreads)

2)スレッドを実行します

void java.util.concurrent.Executor.execute(実行可能なコマンド)

3) 現在のアクティブなスレッド数を表示します

int java.util.concurrent .ThreadPoolExecutor.getActiveCount ()

4) すべてのスレッドを終了します

void java.util.concrrent.ExecutorService.shutdonw()

Executor は複数のスレッドを管理するときに有効になります。配置。たとえば、スレッド プールの作成時にスレッド プールに 10 個のスレッドがある場合、スレッドを実装するために 10 個を超えるエグゼキュータを追加すると、効果的なキューのブロックとスケジューリングが実行されます。私たち開発者にとって、これは透過的であり、内部でどのように動作するかを気にする必要はありません。

コード例:

package com.java.executor;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

public class ExecutorTest {
    private static Integer count = 1; //数量
    
    private static boolean flag = true;//是否执行
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);//在连接池中初始化10个线程
        while(flag){
            if(count<=100){
                executorService.execute(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("执行 : " + count++);
                    }
                });
            }else{
                //判断是否有活动线程
                if(((ThreadPoolExecutor)executorService).getActiveCount()==0){
                    executorService.shutdown();//结束所有线程
                    flag=false;
                    System.out.println("完成操作");
                }
            }
            try {
                Thread.sleep(100);//休息0.1秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

これは Executor を使用する簡単な方法で、便利で高速で、習得も簡単です。ここで休憩を取る 0.1 秒単位で言えば、カウントが 100 を超えるまでこのコードで休まないと、スレッドはアクティブのままになり、スレッドが停止します。さらに、スレッドの実行速度は非常に高速であり、この速度を使用してクローラーが Web を巡回すると、IP がブロックされやすくなります。

以上がExecutor マルチスレッド フレームワークの使用方法 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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