1

有什么方法可以在不使用已弃用的 stop() 的情况下停止线程?

该线程从可能包含无限循环的可能写得不好的类中调用一些方法。由于我无法修改此类,因此我无法控制循环条件,因此无法使用 interrupt() 或任何其他变量正常退出。在这种情况下使用 stop() 是否合理?

4

2 回答 2

1

如果您不能使用 stop() 并且无法修复代码,则唯一的其他选择是在另一个进程中运行代码并终止该进程。

在您的情况下,最简单的选择是使用 Thread.stop()

于 2013-08-03T14:54:05.243 回答
0

stop()方法的问题在于它会使同步对象处于不一致的状态(即,如果您在同步对象更新进行到一半时停止线程,则可能只更新部分对象)。如果您的线程没有使用任何同步方法/块,那么它是安全的stop

如果您的线程可能正在使用同步块/方法,则在调用之前尝试干净地关闭它stop,例如调用interrupt它,然后stop如果线程仍未停止,则在 X 分钟后调用(假设线程正在调用一个破碎的方法)。只需确保线程在调用可能损坏的方法之前将所有内容保持在一致的状态。

于 2013-08-03T14:54:38.430 回答