关于生产者消费者的双Condition问题。
来源:10-7 用条件对象实现生产者模式

慕函数0594413
2020-06-02
老师你好,关于这个案例,我还是有点疑问。之前也有同学问过相同的,给出的答案是双Condition能够避免生产者线程唤醒生产者线程。
但是我觉得会出现这样的情况,是因为生产者线程使用的是condition.signal(),一次只唤醒一个线程。但是如果我用的是condition.signalAll(),即便是单Condition,也不会出现生产者线程唤醒生产者线程的情况,至少把消费者一起唤醒了。
同理,如果使用synchronized(lock) 和wait/notifyAll,这种情况也类似单Condition。
所以我觉得是不是 单Condition + signalAll() ,效果是和 双Condition + signal 效果是等价的?
写回答
1回答
-
单Condition + signalAll() 是可以达到同样效果的,不过双Condition效率更高,可以避免唤醒不必要的线程。
112020-06-03
相似问题