Java:如何强制杀死不需要的线程?

标签 java multithreading

我正在使用一些第三方代码,在某些情况下可能会无限期地挂起。这会导致挂起线程,从而持续占用资源并堵塞线程池。

最终线程池充满了无用的线程,系统实际上失败了。

在 Java 中,无法强制终止线程 (kill -9)。但是如何管理这种边缘情况呢?

最佳答案

显然修复错误会更好,但是替代方案包括

  • 仅在子进程中运行第 3 方代码/库。仅杀死线程可能是不够的。
  • 您可以破解第 3 方代码来检查您发现运行时间过长的部分是否有中断。您可以通过堆栈跟踪来找出它在哪里。
  • 使用 Thread.stop(),尽管这在 Java 8 中已被禁用。
  • 当检测到有挂起线程时,将线程池的大小增加一。这将为您提供正确的 Activity 线程数。

关于Java:如何强制杀死不需要的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717918/

相关文章:

java - HTTP Apache,ssl 身份验证在 Java 1.8 中不起作用

java - Apache Tapestry : Absolute path to assets in META-INF/assets

c++ - 在 C++ 中构建多线程工作队列(消费者/生产者)

java - 重新启动 java 线程

java - 使用迭代器迭代集合是否比普通迭代更高效

java - JDic怎么了?有替代项目吗?

java - OnMouseRelease 的作用类似于 OnMouseClick

java - 从其他线程访问 while 循环 bool 是线程安全的吗?

c++ - GDB 显示没有来自带有调试符号的应用程序的回溯

python - 定期运行三个函数 - 多线程?多处理?