2016-05-19 41 views
1

我有一個程序能夠從網站列表中逐一獲取html文檔,然後解析它。Jsoup解析 - 同時解析多個鏈接

ArrayList<String> links = new ArrayList<>(); 

for(String link : links) { 
    try { 
     Document doc = Jsoup.connect(link).get(); 
     getInfo(doc); 
    }catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

的問題是,它採取以久才喜歡,SITE1然後站點2和site3 HTML文檔..

我的問題是,是否有可能使該代碼將連接到5個鏈接在同一時間,然後解析它們而不是一個接一個。

+1

可以通過創建5個線程並行運行它們。搜索谷歌(或stackoverflow)的Java併發。 – TDG

回答

1

是的。

可能是最簡單的一個與Java8是使用並行流

ArrayList<String> links = new ArrayList<>(); 

links.parallelStream().forEach(link -> { 
    try { 
    Document doc = Jsoup.connect(link).get(); 
    getInfo(doc); 
    }catch (IOException e) { 
    e.printStackTrace(); 
    } 
}); 

當然還有很多其他方法,包括線程,執行池等 - 只是使用谷歌搜索的併發性,線程和諸如此類的東西。