gpt4 book ai didi

java - wait 方法是否立即放弃对 Lock 的控制

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:36 25 4
gpt4 key购买 nike

我正在阅读 Java 文档,它说通知方法不会立即放弃控制权。即调用notify方法后,如果synchronized代码块中还有剩余代码,则先完成剩余代码,再放弃控制。

synchronized(this) {
// line 1
notify();
//line 2
// line 3
}

第2行和第3行仍然会被执行。等待方法是否具有相同的功能

synchronized(this) {
// line 1
wait();
//line 2
// line 3
}

第2行和第3行会被执行吗?

最佳答案

没有。来自 wait() 的文档:

  1. 当前线程必须拥有该对象的监视器。
  2. 线程释放这个监视器的所有权
  3. 一直等到另一个线程通过调用 notify 方法或 notifyAll 方法通知在此对象监视器上等待的线程唤醒。
  4. 然后线程等待,直到它可以重新获得监视器的所有权,并且
  5. 恢复执行。

所以,点1对应于synchronized()语句;第 2、3 和 4 点在 wait() 方法中,第 5 点对应于代码中的第 2 和第 3 行。

关于java - wait 方法是否立即放弃对 Lock 的控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470265/

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