为什么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()
是否真的是安全的。 例如,您必须分析线程使用的每个可能的代码(包括核心和第三方库)。 因此,默认情况下会使其不安全。