リンクのリストを反復処理するクラスがあります。リンクごとに、処理を行いたいと思います。そのため、リンクごとにスレッドを作成する必要があります。
コードは次のとおりです(メイン):
ThreadProcessing tp;
for(int i = 0; i < listUrl.size(); i++)
{
tp.add(string_url);
}
ThreadProcessing クラスでは、Executor インターフェイスを使用する必要があります。要点: 30 スレッドのプールを作成する必要があります。ThreadP クラスには、非ブロッキング スレッドのリストが含まれます (もちろん、30 を超えるスレッドを含めることができます)。必要な数のスレッドを追加でき、クラスはこれらすべてのスレッドを実行する責任があります。
それが私がやろうとしたことです(うまくいきません)。ThreadProcessingクラス:
public class ThreadProcessing {
List<Runnable> runnables = new ArrayList<Runnable>();
ExecutorService pool;
@PostConstruct
public void init()
{
pool = Executors.newFixedThreadPool(30);
}
public void add(String url)
{
runnables.add(createRunnable(url));
executeRunnables(pool, runnables);
}
public static void executeRunnables(final ExecutorService service, List<Runnable> runnables){
for(Runnable r : runnables){
service.execute(r);
}
service.shutdown();
}
private Runnable createRunnable(final String url){
Runnable getContentFromURL = new Runnable(){
public void run(){
//My treatment with url
}
};
return getContentFromURL;
}
}
説明が漠然としすぎていないことを願っています。ありがとうございます。