为什么 Thread.stop()
在 Java 中被弃用?在他们的网站上,我看到以下内容:
为什么不推荐使用
Thread.stop
?因为它本质上是不安全的。停止线程会导致它解锁所有已锁定的监视器。 (当
ThreadDeath
异常向上传播到堆栈时,监视器被解锁。)如果以前受这些监视器保护的任何对象处于不一致状态,其他线程现在可能会以不一致状态查看这些对象。据说这样的物体被损坏了。当线程对损坏的对象进行操作时,可能会导致任意行为。这种行为可能很微妙且难以察觉,也可能很明显。与其他未经检查的异常不同,ThreadDeath
静静地杀死线程;因此,用户不会收到有关他的程序可能已损坏的警告。损坏可能在实际损坏发生后的任何时间出现,甚至在未来数小时或数天之后。
我不明白他们所说的“监视器”是什么意思。无论如何,我的问题是如果不应该调用 Thread.stop()
那么应该如何停止 Java 线程?
原文由 user2374107 发布,翻译遵循 CC BY-SA 4.0 许可协议
您问:
答案:在 Java 中,没有干净、快速或可靠的方法来停止线程。
相反,线程依赖于一种称为 中断 的 协作 机制。这意味着 Threads 只能向其他线程发出停止 _信号_,而不是强制它们停止。
来源: https ://codeahoy.com/java/How-To-Stop-Threads-Safely/