完成的主题:我应该忽略它们吗?

时间:2014-11-08 10:55:51

标签: java multithreading visualvm

我写了一个网页抓取工具,可以打开很多网页。正如您在下图中所看到的,一些线程似乎已经完成(白色),但这是什么意思?我有一些错误吗?有资源泄漏吗?而且,我怎么能知道这些线程的生成位置以及它们为什么要完成?我应该担心吗?

VisualVM

问题在于,如果我让它保持运行一天,我会得到成千上万的线程,所以我很担心。

2 个答案:

答案 0 :(得分:3)

启动大量线程很好,只要没有太多线程同时存在。 “完成”线程不再存在,因此它们不会引起问题。

话虽如此,在Java线程中创建起来相当昂贵(在其他语言中可能会有所不同,比如Erlang),并且您通常不希望/不需要在您的过程中创建大量线程应用程序的生活。您可能想要使用线程池。这将重新使用线程,而不是多次启动新线程。

答案 1 :(得分:1)

完成的线程不会终止您的应用程序。但是,不是创建我们将要完成的新线程,而是使用将重用它们的线程池。