当前位置: 首页 > 面试题库 >

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

聂鹏云
2023-03-14
问题内容

为什么Thread.stop()这么危险?

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

我知道stop已弃用。还有什么使它不安全的?

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


问题答案:

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



 类似资料:
  • 问题内容: GoogleJavaScript样式指南建议不要扩展。但是,我用它来在不存在的浏览器中使用它(以及类似方法)。 我知道一些问题,但不是哈希表。 扩展时可能会出现什么问题,使Google对此提出建议? 问题答案: 大多数人都错过了这一点。我认为,例如填充或填充标准功能,使其在较旧的浏览器中运行,是一个好主意。不要听那些讨厌的人。Mozilla甚至向您展示了如何在MDN上执行此操作。通常,

  • 两者都将找到答案996没有问题。我们使用modulos来保持合理的输出大小,使用pair来避免指数分支。 对于n=5000,C++代码输出783,但Python会抱怨 如果我们加上几行

  • 问题内容: 我只是在学习PyQt,并研究信号和插槽机制。我对冗长的语法有些困惑。我们为什么有: 我更喜欢写以下内容: 谁能告诉我为什么connect()语法需要如此明确/冗长? 问题答案: 您可以使用PyQt的新型信号,这些信号不那么冗长: 成为:

  • 问题内容: 我正在研究THREE.js,并注意到其中定义函数的模式如下: 这种方法的 正常 变化如下所示: 将第一个版本与 正常 版本进行比较,第一个版本似乎有所不同: 它分配一个自动执行功能的结果。 它在此函数内定义了局部变量。 它返回包含使用局部变量的逻辑的 实际 函数。 因此,主要的区别在于,在第一个变体中,初始化时,bar仅分配一次,而第二个变体在每次调用时都会创建此临时变量。 关于为什么

  • 问题内容: 我在代码的第34行上不断收到LineUnavailableException:https://www.refheap.com/21223 错误显示为。 我正在创建Sound类的多个实例(在我的refheap粘贴中实现)。似乎最初的实例没有问题。但是,当我开始使用相同的音频文件制作Sound对象的新实例时,便开始出现此错误。 知道如何解决吗? EIDT:我认为这个问题的 想法可能是我需要

  • 问题内容: 说,我有一种方法: 然后在尝试编译此代码时: 我得到一个错误。谁能解释为什么类型系统不能推断Collections.emptyList()应该是类型吗? 上面的示例显然是很人为的,但是我一直都在偶然地遇到这种限制,这确实很烦人。阅读了 Effective Java 之后,我发现您可以轻松地完成工作(必须说,当时对我来说是一个启示),并且一切都可以顺利编译,但是当您使用复杂的类型时,确实