2017-05-29 71 views
0

我試圖在Jsoup創建簡單的爬蟲。它會查找網站源代碼中的所有鏈接,並最終跟隨它們,再次搜索每個鏈接中的新鏈接等等。Jsoup連接分裂在多個線程

問題是在深入瞭解兩個重定向之後,計算時間很長。

enter image description here

這是它是如何工作的僞代碼:

function follow_links(String[] links) 
{ 

for(int i=0; i<=links.amount-1; i++) 
{ 
    Document doc = Jsoup.connect(links[i]); 
    String[] newlinks = new String[max]; 
    newlinks = parse(doc); 
    ...  
} 

} 

我的問題是,代碼是否會更快,如果我創建了每個循環迭代新的線程,因此所有連接會並行建立。連接函數返回需要一些時間,所以我想隊列已經形成。線程可以解決這個問題嗎?

回答

0

我不這麼認爲。如果您的應用程序正在經歷1000個鏈接,您將創建1000個線程,這將會導致整個應用程序的性能下降查看這個瞭解更多LINK ABOUT THREADS

最好是保持一個線程池和您的'搜索'提交作爲一項任務。 ExecutorServices的CompletableFuture似乎是解決方案。

這裏是關於堆棧的主題,其中一個人試圖將相同的想法落實到他的抓取工具中。 LINK