gpt4 book ai didi

java - 信号量同步 wait() 和 notify()

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:07 27 4
gpt4 key购买 nike

<分区>

我有下面的代码:这是为了获得信号量的知识。代码是 Thread A 首先等待 b.wait() (使调用线程 hibernate ),然后得到通知,为什么代码在这里同步?如果否,则给出 IllegalMontiorXXXXXXXXX 异常。

public class ThreadA {
public static void main(String[] args){
ThreadB b = new ThreadB();
b.start();

synchronized(b){
try{
System.out.println("Waiting for b to complete...");
b.wait();
}catch(InterruptedException e){
e.printStackTrace();
}

System.out.println("Total is: " + b.total);
}
}
}



class ThreadB extends Thread{
int total;
@Override
public void run(){
synchronized(this){
for(int i=0; i<100 ; i++){
total += i;
}
notify();
}
}
}

编辑:答案是同步让当前线程拥有信号量。 notify() 文档对此进行了解释。

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