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

标签 java multithreading

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

为什么建议改用 Thread.interrupted()

我知道 stop 已被弃用。还有什么其他因素使它不安全?

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

最佳答案

Why is Thread.stop() so dangerous?

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

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/

相关文章:

java - 如何为此 JDBC :ODBC connection string that is trying to connect to an MS Access database 添加密码

java - JDBC 调用触发的 sun.misc.Unsafe.park

Java JDBC 连接集成安全性仅在我的 Eclipse 中工作

multithreading - 信号量和互斥量在实现上有什么区别?

c# - 图像的奇怪行为

c - pthread_join 损坏堆栈中的 pthread_create 参数

java - 在 Wicket 应用程序中分离语言和格式区域设置?

java - 如何正确地将具有给定小数位数的浮点值的字符串解析为整数?

java - 如何在Java中将秒表制作为线程?

java - 这是 'double check' 反模式的情况吗? (获取一个map条目,不存在则创建)