Java的Thread.stop是不安全的,因为:“Thread.stop导致它解锁它锁定的所有监视器”
这是有道理的。但是,如果该线程没有在应用程序代码中设置任何监视器,那么使用Thread.stop是否安全呢?我理解使用Thread.stop是不好的做法,但是我不清楚为什么如果运行的代码不能保存监视器会不安全。
答案 0 :(得分:3)
你可能在这里对受影响的物体有点过于狭隘。它可以是线程接触的任何监视器(实际上只是由多个线程访问的对象),或任何这些监视器引用的任何对象(在某些情况下,甚至可能是基元)。 任何其中一个可能会处于中断状态,具体取决于调用Thread.stop()的时间,而且没有模糊的方法可以找出确切的内容。
如果您的Thread
确实没有触及任何此类对象,那么从技术上讲,它是安全的" - 但这是一个非常罕见的情况,也是一个奇怪的情况(因为如果线程永远不会与任何其他地方可以引用的状态相互作用,它的重点是什么?)