homework,java,在multiProducer / singleConsumer模型上使用notify()而不是notifyAll()时避免死锁

时间:2015-11-29 17:37:37

标签: java multithreading sleep producer-consumer notify

所以我正在编写这份报告,最后的任务是创建一个生产者/消费者模型,其中包含n生产者和一个消费者,诀窍是我必须使其与{{ 1}}而不是 put get 方法中的notify()

我想把它留在 get 方法中并不是问题,因为那里只有一个消费者,但我很难搞清楚如何确保 put 方法中的notifyAll()仅调用消费者线程,而不是唤醒另一个生产者并导致死锁。

1 个答案:

答案 0 :(得分:0)

你不能决定谁被唤醒了。这就是为什么你需要额外的逻辑,所以如果通知错误的线程,它将知道它不应该运行并且notify()另一个线程(并且重新wait()本身)。