我正在学习多线程。
我试图在Java中实现生产者消费者问题。它工作正常。 但如果我删除通知调用程序进入死锁状态。为什么?
当队列大小变为0时,它会发生死锁。当大小变为0时,等待应该在消费者内部调用,生产者应该开始工作。
$hashref
答案 0 :(得分:0)
您需要通知,因为当一个线程处于等待状态时,因为队列为空或完全进入运行状态,如果某个其他线程在放置if队列为空并且队列已满后发出通知。 把q.wait(10);所以你的代码不会继续死锁,因为一段时间后它将检查循环条件。 在上面的用例
中使用notify始终是最佳做法