3

できるだけ早く別のWebChromeドライバ(atcThread[])で一連のリンクを開こうとしています。私はExecutorServiceを実装しようとしましたが、スレッドの最初の実行が逐次であることに気付きました。より速くなるようにリンクを並行して開くことができる方法はありますか?ありがとう!あなたが期待するよう、スレッドプールへの呼び出しを委任するrunメソッドにそれを呼び出すのではなく、あなたのクラスATCpoolのコンストラクタでメソッドget(String url)を呼び出すためマルチスレッドとセレン

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

public class ATC { 
    private ExecutorService executor = Executors.newFixedThreadPool(15); 

    public void startThreads() { 
     for (int i = 0; i < Captcha.x; i++) { 
      executor.execute(new ATCpool(i, Generator.links[i])); 
     } 
    } 

    private final class ATCpool implements Runnable{ 

     public ATCpool(int x, String link){ 
      Generator.atcThread[x].get(link); 
     } 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
     } 
    } 
} 

答えて

1

は私のためには、この動作を取得します。

単にこのような何かのためにあなたのクラスATCpoolを変更:

private final class ATCpool implements Runnable { 

    private final int x; 
    private final String link; 

    ATCpool(int x, String link){ 
     this.x = x; 
     this.link = link; 
    } 

    @Override 
    public void run() { 
     // Will be called asynchronously by a thread of the thread pool 
     Generator.atcThread[x].get(link); 
    } 
}