【发布时间】:2022-06-14 00:03:09
【问题描述】:
了解为什么不推荐使用 Thread.stop(),
因为它本质上是不安全的。停止线程会导致它解锁所有已锁定的监视器。 (当 ThreadDeath 异常向上传播堆栈时,监视器被解锁。)如果以前受这些监视器保护的任何对象处于不一致状态,则其他线程现在可能会查看这些处于不一致状态的对象。据说这些物体已损坏。当线程对损坏的对象进行操作时,可能会导致任意行为。这种行为可能很微妙且难以检测,也可能很明显。与其他未经检查的异常不同,ThreadDeath 以静默方式杀死线程;因此,用户没有警告他的程序可能已损坏。损坏可以在实际损坏发生后的任何时间出现,甚至在未来几小时或几天内。
我遇到了 inconsistent state 短语。我试图用谷歌知道它是什么意思。 I have found only this answer,但这似乎与我的情况无关。
【问题讨论】:
-
想想银行应用程序中的线程。它锁定帐户以借记和贷记。它设法从借记帐户中扣除,然后在将钱添加到另一个帐户之前被杀死。现在你实际上赔了钱。
标签: java