我正在使用一些第三方代码,在某些情况下可能会无限期地挂起。这会导致挂起线程,从而持续占用资源并堵塞线程池。
最终线程池充满了无用的线程,系统实际上失败了。
在 Java 中,无法强制终止线程 (kill -9)。但是如何管理这种边缘情况呢?
最佳答案
显然修复错误会更好,但是替代方案包括
- 仅在子进程中运行第 3 方代码/库。仅杀死线程可能是不够的。
- 您可以破解第 3 方代码来检查您发现运行时间过长的部分是否有中断。您可以通过堆栈跟踪来找出它在哪里。
- 使用 Thread.stop(),尽管这在 Java 8 中已被禁用。
- 当检测到有挂起线程时,将线程池的大小增加一。这将为您提供正确的 Activity 线程数。
关于Java:如何强制杀死不需要的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717918/