gpt4 book ai didi

java - 杀死对象创建的线程

转载 作者:行者123 更新时间:2023-11-30 07:19:28 26 4
gpt4 key购买 nike

我使用 crawler4j 创建了一个自定义爬虫。在我的应用程序中,我创建了很多 Controller ,一段时间后,系统中的线程数将达到最大值,JVM 将抛出异常。即使我在 Controller 上调用 ShutDown(),并将其设置为 null 并调用 System.gc(),我的应用程序中的线程保持打开状态,应用程序将崩溃。

我使用了 jvisualvm.exe (Java VisualVM) 并发现我的应用程序在某一时刻达到了 931 个线程。

有没有办法立即杀死由 crawler4j 项目的 CrawlController 对象创建的所有线程? (或与此相关的任何其他对象)

最佳答案

我刚刚花了 2 个小时来解决完全相同的问题。我终于找到了错误的来源。如果创建了一个 Controller ,但没有启动它,shutdown() 不会终止任何创建的线程。相反,您必须使用以下内容:

controller.shutdown();
controller.getPageFetcher().shutdown();

controller 是您的 CrawlController 实例。
我也在 crawler4j 项目页面上提出了这个问题,看起来这个问题将在 3.6 版本发布时得到解决

关于java - 杀死对象创建的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com