为什么Thread.stop()如此危险?
此处详细描述了这些问题:http
:
//download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
为什么建议改用Thread.interrupted()?
因为
Thread.interrupt()可以让中断的 目标线程 在知道 安全的情况 下响应。
我知道不建议停止使用。还有什么使它不安全的?
请参阅上面的链接。
有什么地方可以使用停止方法?如果是这样,请举一个例子。
从理论上讲,如果您知道要停止的线程:
- 从未更新与其他线程共享的数据结构,
- 没有使用等待/通知或更高级别的同步类,也没有使用依赖于它们的类,
- 还有其他一些事情。
例如,我认为
stop()此线程是安全的:
new Thread(new Runnable(){ public void run(){for (long l = 0; l > 0; l++){}}).start();但是,在大多数情况下, 很难
进行分析来确定呼叫
stop()是否真正安全。例如,您必须分析线程使用的所有可能的代码位(包括核心库和第三方库)。因此,默认情况下使其不安全。



