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

2023-11-21

众所周知,不应使用 Thread.stop() 停止正在运行的进程。

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

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

而且,更糟糕的是,要么没有库的源代码,要么它太大而无法对其进行编辑并在适当的位置添加检查。

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


为什么在等待某些条件时不尝试使用睡眠(长时间超时),如果没有成功,则简单地从线程“返回”?


可能你的线程正在运行while (booleanVariable) { },

如果是,您可以将此变量设置为 易失性,并且线程控制器将其设置为 false。

想想Thread.stop()System.exit(value),它可以工作,但是当你有一些错误导致线程停止/虚拟机退出时,找到它会更加困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我对 Thread.interrupt() 的调用不起作用,如何正确停止线程? [复制] 的相关文章

随机推荐