gpt4 book ai didi

java - 方法 wait() 和 notifyAll() 不是静态的

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

public synchronized  static int get() {
while(cheia()==false){
try{
wait();
}
catch(InterruptedException e){
}
}

if (fila[inicio] != 0) {
int retornaValor = fila[inicio];
fila[inicio] = 0;
inicio++;
if (inicio == size) {
inicio = 0;
}
notifyAll();
return retornaValor;
}
notifyAll();
return 0;
}

为什么 wait() 和 notifyAll() 在这段代码中没有运行?

IDE 说:方法 wait()(或 notifyAll)不是静态的?

你能帮帮我吗?

最佳答案

这是因为你在一个静态方法中,这意味着该方法是在类实例而不是对象实例上执行的。 waitnotify 是实例方法。

改为创建一个对象锁,并使用它来进行同步和发信号。

private static final Object lock = new Object();

public static int get(){
synchronized(lock){
lock.wait();
lock.notify();
...etc
}
}

关于java - 方法 wait() 和 notifyAll() 不是静态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15281566/

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