我有一个遍历链接列表的类。对于每个链接我都想做一个处理。所以我必须为每个链接创建一个线程。
这是代码(主要):
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;
}
}
我希望我的解释没有太含糊,谢谢。