如果我对Thread.interrupt()的调用不起作用,如何正确停止一个线程?

Rog*_*ach 5 java multithreading interrupt

众所周知,使用Thread.stop()不会停止运行进程.

通常手册和教程建议使用Thread.interrupt()或一些布尔变量,并从代码内部检查该中断或变量.

但是,如果我有一个库方法,有时需要很长时间才能执行,我想让用户有能力停止该过程?并且库没有给我一个机制来做它(不检查线程中断状态,没有"停止!"变量)?

并且,为了添加不好的东西,要么没有库的源代码,要么它太大而无法编辑它并在适当的位置添加检查.

似乎Thread.stop()是这里唯一的解决方案.或者也许有一些解决方法?

jle*_*lew 3

如果您的情况可行,请生成另一个进程并将其视为工作单元,而不是线程。进程终止更具确定性,尽管将一个进程专门用于以前线程的工作对于您的情况来说可能过于重量级。