虚假唤醒对性能造成的影响有多大?
今天无事的时候看API 看到这个类java.util.concurrent.locks.Condition 的时候 看到个名词叫 虚假唤醒
说来惭愧 我都是先遇到问题 才知道名词 实在是知识量不够啊
不扯了... 入主题
正常情况下 我们唤醒某个线程都是调用notifyAll()函数 但是这个函数会唤醒等待在某个对象上的所有线程 而某些线程不是你希望唤醒的(比如说消费/生产者模式 可能生产者线程只生产了一个产品 但是一个唤醒操作却唤醒了所有的消费者线程) 最后导致这些刚被唤醒的线程马上又挂起 这种情况是否就是虚假唤醒
另外 在实际开发中 有必要注意这个问题么 这种情况对性能造成的影响有多大呢?
如果俺哪里说错了 请回帖的童鞋温柔的指正 谢谢哦~
------解决方案--------------------
不懂。 @ 默然擦肩过。 留名。
------解决方案--------------------
对于大多数应用程序,这带来的实际影响很小,因为Condition应该总是在一个循环中被等待,并测试正被等待的状态声明。