数時間立ち往生している問題があり、その解決方法が本当にわかりません。それは非常に簡単です-私にはいくつかのスレッドがあり、そのうちの1つは他のスレッドからの信号を待つ必要があります。なんとなく、条件合図しても……何も起こらない!スレッドはまだ眠っているようです。すごく変な話なんですが、よくわからないのは私のせいかもしれません…
ここに私のコードの一部があります:
@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(); と確信しています。その条件で待機しているスレッドがあるときに呼び出されます-確認したところ、デバッガーはその行を何度も通過しました。しかし、「待ってます」というセリフはスレッドに一度だけ出て、「起きました」は一度も出てこない..
アイデア、修正方法、または何を確認する必要がありますか? ほぼ全部試した...
お時間をいただきありがとうございます。