所以我正在编写这份报告,最后的任务是创建一个生产者/消费者模型,其中包含n
生产者和一个消费者,诀窍是我必须使其与{{ 1}}而不是 put 和 get 方法中的notify()
。
我想把它留在 get 方法中并不是问题,因为那里只有一个消费者,但我很难搞清楚如何确保 put 方法中的notifyAll()
仅调用消费者线程,而不是唤醒另一个生产者并导致死锁。
答案 0 :(得分:0)
你不能决定谁被唤醒了。这就是为什么你需要额外的逻辑,所以如果通知错误的线程,它将知道它不应该运行并且notify()
另一个线程(并且重新wait()
本身)。