请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于生产者消费者的双Condition问题。

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

正在回答

1回答

单Condition + signalAll() 是可以达到同样效果的,不过双Condition效率更高,可以避免唤醒不必要的线程。

1 回复 有任何疑惑可以回复我~
  • 提问者 慕函数0594413 #1
    嗯嗯,好的。明白啦
    回复 有任何疑惑可以回复我~ 2020-06-03 08:08:27
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信