为什么Thread.stop()如此危险

为什么Thread.stop()如此危险?

为什么建议使用Thread.interrupted()代替?

我知道stop被弃用了。 还有什么让它不安全?

有什么地方可以使用stop方法吗? 如果是这样给我一个例子。

为什么Thread.stop()如此危险?

这里详细描述了这些问题: http : //download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html

为什么建议使用Thread.interrupted()代替?

因为Thread.interrupt()允许中断的目标线程在它知道可以安全的时候到达某个点。

我知道停止被弃用了。 还有什么让它不安全?

见上面的链接。

有什么地方可以使用停止方法吗? 如果是这样给我一个例子。

理论上,如果你知道你停止的线程:

  • 没有更新与其他线程共享的数据结构,
  • 没有使用wait / notify或更高级别的同步类,或者依赖它们的类,
  • 还有一些其他的东西。

例如,我认为stop()这个线程是安全的:

 new Thread(new Runnable(){ public void run(){for (long l = 0; l > 0; l++){}}).start(); 

但是,在大多数情况下,分析是否太难以确定调用stop()是否真的是安全的。 例如,您必须分析线程使用的每个可能的代码(包括核心和第三方库)。 因此,默认情况下会使其不安全。