gpt4 book ai didi

java - 谁调用 wait() 方法,主线程或用于调用 wait() 的实例

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

我对线程中的 wait() 方法如何工作感到很困惑。假设我写:

public class test3 {
public static void main(String args[]){
Thread A = new Thread();
synchronized(this){
A.wait();
}
}
}

现在这里方法 wait() 将被哪个线程调用 - 主线程或线程 A,换句话说,哪个线程将离开监视器并暂时进入 hibernate 状态。

最佳答案

main 线程将等待 A 的实例。即,线程 A 将充当锁,主线程将等待另一个线程调用 notify()

注意 - 在未获取实例锁定的情况下调用 wait()/notify() 将导致 IllegalMonitorStateException

wait()notify() 是在 Object 类中定义的方法。线程在实例上调用 wait()notify()(也称为锁 AKA 监视器)。因此,当您使用 synchronized 关键字时,您会在已同步的对象上获得一个锁(也称为进入监视器)。接下来,当您调用 wait() 时,已获取锁的线程将等待另一个线程对同一实例(同一锁)调用 notify()

关于java - 谁调用 wait() 方法,主线程或用于调用 wait() 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249870/

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