我有一个程序,可以逐个从网站列表中获取html文档,然后解析它。
ArrayList<String> links = new ArrayList<>();
for(String link : links) {
try {
Document doc = Jsoup.connect(link).get();
getInfo(doc);
}catch (IOException e) {
e.printStackTrace();
}
}
问题是,获取html文档需要很长时间,比如site1然后是site2和site3 ..
我的问题是,是否有可能使此代码同时连接到5个链接,然后逐个解析它们。
答案 0 :(得分:2)
是
Java8最简单的可能就是使用并行流
ArrayList<String> links = new ArrayList<>();
links.parallelStream().forEach(link -> {
try {
Document doc = Jsoup.connect(link).get();
getInfo(doc);
}catch (IOException e) {
e.printStackTrace();
}
});
当然有许多替代方法,包括线程,执行程序池等 - 只需使用谷歌搜索并发,线程等等。