Java:没有监视器的Thread.stop线程

时间:2018-06-13 16:40:51

标签: java multithreading

Java的Thread.stop是不安全的,因为:“Thread.stop导致它解锁它锁定的所有监视器”

这是有道理的。但是,如果该线程没有在应用程序代码中设置任何监视器,那么使用Thread.stop是否安全呢?我理解使用Thread.stop是不好的做法,但是我不清楚为什么如果运行的代码不能保存监视器会不安全。

1 个答案:

答案 0 :(得分:3)

你可能在这里对受影响的物体有点过于狭隘。它可以是线程接触的任何监视器(实际上只是由多个线程访问的对象),或任何这些监视器引用的任何对象(在某些情况下,甚至可能是基元)。 任何其中一个可能会处于中断状态,具体取决于调用Thread.stop()的时间,而且没有模糊的方法可以找出确切的内容。

如果您的Thread确实没有触及任何此类对象,那么从技术上讲,它是安全的" - 但这是一个非常罕见的情况,也是一个奇怪的情况(因为如果线程永远不会与任何其他地方可以引用的状态相互作用,它的重点是什么?)