在多线程中使用Notify方法

时间:2017-07-26 20:25:12

标签: java multithreading synchronization wait

我正在学习多线程。

我试图在Java中实现生产者消费者问题。它工作正常。 但如果我删除通知调用程序进入死锁状态。为什么?

当队列大小变为0时,它会发生死锁。当大小变为0时,等待应该在消费者内部调用,生产者应该开始工作。

$hashref

1 个答案:

答案 0 :(得分:0)

您需要通知,因为当一个线程处于等待状态时,因为队列为空或完全进入运行状态,如果某个其他线程在放置if队列为空并且队列已满后发出通知。 把q.wait(10);所以你的代码不会继续死锁,因为一段时间后它将检查循环条件。 在上面的用例

中使用notify始终是最佳做法