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

时间:2015-02-25 11:31:21

标签: java multithreading

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

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

在Java中,人们不能强行杀死线程(kill -9)。但是如何管理这样的边缘案例?

1 个答案:

答案 0 :(得分:2)

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

  • 仅在子流程中运行第三方代码/库。只是杀死线程是不够的。
  • 你可以破解第三方代码,检查你发现运行时间过长的部分的中断。您可以将堆栈跟踪用尽。
  • 使用Thread.stop()虽然已在Java 8中禁用。
  • 当您检测到存在挂起的线程时,请将线程池的大小增加一个。这将为您提供正确数量的活动线程。