gpt4 book ai didi

java - 在同步代码段中使用不带 notify() 的 wait() (java)

转载 作者:行者123 更新时间:2023-11-30 06:30:45 25 4
gpt4 key购买 nike

我想知道是否可以在不使用 notify() 的情况下对同步代码使用 wait(),如下所示:

wait_on(B):
synchronized(B.monitor) {
B.count--
while (B.count > 0) { /* wait */ }
}

提前致谢

最佳答案

您需要 notify 或 notifyAll 将线程从等待状态中唤醒。在您的示例中,代码将进入等待状态并停留在那里(除非被中断)。

了解等待、屈服和 sleep 之间的区别。 wait需要在synchronized block 中调用,一旦进入wait,锁就会被释放,线程一直处于那个状态,直到notify被调用。 Yield 将线程返回到就绪池,并让调度程序决定何时再次运行它。 sleep 意味着线程在固定的时间段内进入 hibernate 状态(然后从那里进入就绪池)。

确保你在同步的同一个对象上调用等待(这里是 B.monitor)。

关于java - 在同步代码段中使用不带 notify() 的 wait() (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234598/

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