我有一个问题,我被困了几个小时,我真的不知道如何解决它。这很简单——我有一些线程,其中一个需要等待来自另一个的信号。不知何故,即使我在某个条件下发出信号……什么也没有发生!看起来线程仍在休眠。这真是一个奇怪的问题,但我不太了解某些东西可能是我的错......
这是我的代码的一部分:
@Override
public void bodyProduced() {
lock.lock();
producedBodies++;
if (producedEngines == 0) {
while(producedEngines==0)
{
System.out.println("I am still waiting!");
body.awaitUninterruptibly();
}
System.out.println("I waked up!");
producedBodies--;
producedEngines--;
} else {
engine.signalAll();
}
}
我确信 body.signalAll(); 当有线程在该条件下等待时调用 - 我检查并调试器多次遍历该行。然而,“我在等待”这句话只出现一次,“我醒来”从未出现过。
任何想法,如何解决它,或检查什么?我几乎尝试了所有...
感谢您的时间和帮助!