【问题标题】:What kind of damage may take place when calling the method Thread.stop? [duplicate]调用 Thread.stop 方法时可能会发生什么样的损坏? [复制]
【发布时间】:2014-03-27 15:51:35
【问题描述】:

我刚刚阅读了函数 Thread.stop 的 JDK 文档。它说,

停止线程会导致它解锁所有已锁定的监视器。如果以前受这些监视器保护的任何对象处于不一致状态,则其他线程现在可能会查看这些处于不一致状态的对象。这些对象被称为已损坏。当线程对损坏的对象进行操作时,可能会导致任意行为。

我只是不太明白。 不一致的状态是什么意思?

任意行为会是什么?谁能给我解释一下?

(我的问题和你认为的重复的问题有点不同。我强调可能造成的损坏,而前一个强调可以用什么方法代替 Thread.stop。)

【问题讨论】:

    标签: java multithreading


    【解决方案1】:

    考虑任何类型的复杂数据结构,比如双向链表。线程锁定结构,查看并更改它,然后释放锁。所以考虑:

    1. 锁定列表。

    2. 调整前向指针。

    3. 调整对应的反向指针。

    4. 释放锁。

    想象一下,如果一个线程完成了第 1 步和第 2 步,然后您将其停止。双向链表无效,因为对它的修改已完成一半。如果另一个线程要获取此锁并尝试遍历列表,则会导致灾难。

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 2011-11-05
      • 2015-02-21
      • 2021-12-11
      • 2015-01-01
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多