为什么 Thread.stop()
如此危险?
为什么建议改用 Thread.interrupted()
?
我知道 stop
已被弃用。还有什么其他因素使它不安全?
有什么地方可以使用stop
方法吗?如果是这样给我一个例子。
最佳答案
Why is Thread.stop() so dangerous?
Why is it advisable to use Thread.interrupted() instead?
因为 Thread.interrupt()
让中断的目标线程 在它知道可以安全 时响应这样做。
I know stop is deprecated. What other thing makes it unsafe?
请参阅上面的链接。
Is there any place where I can use stop method? If so give me an example.
理论上,如果您知道要停止的线程:
- 从未更新过与其他线程共享的数据结构,
- 没有使用等待/通知或更高级别的同步类,或依赖于它们的类,
- 可能还有其他一些事情。
例如,我认为 stop()
这个线程是安全的:
new Thread(new Runnable(){
public void run(){for (long l = 0; l > 0; l++){}}).start();
但是,在大多数情况下,太难进行分析以确定调用 stop()
是否真的安全。例如,您必须分析线程使用的每一位可能的代码(包括核心和第三方库)。所以默认情况下它是不安全的。
关于java - 为什么 Thread.stop() 如此危险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218969/