【发布时间】:2011-04-11 13:07:53
【问题描述】:
首先是一些背景知识:在 Java 中,条件等待的所有结构都允许虚假唤醒,这可能会干扰公平性。我一直在尝试为 ReadWrite 锁编写一个实现,该锁以严格的到达顺序为传入线程提供服务。
现在,每次线程进入我编写的类时,我的算法都会创建一个新的 java.util.concurrent.Condition。我想知道这种行为是否可取,或者这种模式是否有一些不好的副作用,比如大幅减速。
【问题讨论】:
-
问题:为什么我们不能使用Java公平锁。 (new ReentrantLock(boolean fair)) ?
-
根本的问题是等待条件会受到虚假唤醒的影响,这可能会使事情变得非常糟糕。不幸的是,使用公平锁无助于防止虚假唤醒。
标签: java concurrency conditional-statements