gpt4 book ai didi

Java 线程 wait() => 阻塞?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:33 25 4
gpt4 key购买 nike

根据 Java thread state info调用 wait() 将导致线程进入 BLOCKED 状态。然而,这段代码将导致(在被调用之后)线程处于等待状态。

class bThread extends Thread {
public synchronized void run() {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

我是不是搞错了什么?谁能向我解释这种行为?任何帮助将不胜感激!

最佳答案

线程在收到通知之前一直在等待。然后它变成 BLOCKED 尝试重新进入同步区域,直到所有其他线程都离开。

您发布的链接中的相关部分(关于 WAITING):

For example, a thread that has called Object.wait() on an object is waiting for another thread to call Object.notify() or Object.notifyAll() on that object.

和(关于 BLOCKED):

A thread in the blocked state is waiting for a monitor lock to [...] reenter a synchronized block/method after calling Object.wait.

最后一部分发生在线程试图从 wait() 返回时,但直到那时才发生。

关于Java 线程 wait() => 阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com