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