2014-11-08 82 views
1

我寫了一個可以打開很多網頁的網絡爬蟲。正如你在下面的圖片中看到的,一些線程似乎已經完成(白色),但這意味着什麼?我有一些錯誤嗎?有資源泄漏嗎?而且,我怎麼能知道這些線程在哪裏生成以及它們爲什麼完成?我應該擔心他們嗎?成品線:我應該忽略它們嗎?

VisualVM

的問題是,如果我把它跑了一天,我得到數以千計的線程,所以我很擔心。

+0

如果你在一天中建立的線程越來越多,而且他們從不拆卸,那麼是的,你有泄漏。我會寫一個單元測試,聲明代碼在完成其任務後將其資源撕下。 – 2014-11-08 11:13:35

回答

2

啓動大量線程就可以了,只要其中沒有太多的線程同時處於活動狀態即可。 「完成」的線程不再有效,所以它們不會引起問題。

話雖如此,Java線程創建起來相當昂貴(在Erlang等其他語言中,這可能會有所不同),並且您通常不希望/不需要在過程中創建大量線程你的應用程序的生活。您可能想要使用線程池。這將重新使用線程而不是多次啓動新線程。

1

完成的線程不會終止您的應用程序。但是不要創建我們將要完成的新線程,而是使用一個線程池來重用它們。

相關問題