【问题标题】:Any potential problems with masses of conditions for a lock in Java?Java中锁的大量条件是否存在潜在问题?
【发布时间】:2011-04-11 13:07:53
【问题描述】:

首先是一些背景知识:在 Java 中,条件等待的所有结构都允许虚假唤醒,这可能会干扰公平性。我一直在尝试为 ReadWrite 锁编写一个实现,该锁以严格的到达顺序为传入线程提供服务。

现在,每次线程进入我编写的类时,我的算法都会创建一个新的 java.util.concurrent.Condition。我想知道这种行为是否可取,或者这种模式是否有一些不好的副作用,比如大幅减速。

【问题讨论】:

  • 问题:为什么我们不能使用Java公平锁。 (new ReentrantLock(boolean fair)) ?
  • 根本的问题是等待条件会受到虚假唤醒的影响,这可能会使事情变得非常糟糕。不幸的是,使用公平锁无助于防止虚假唤醒。

标签: java concurrency conditional-statements


【解决方案1】:

好吧,就像所有性能问题一样,您通常应该先以干净的方式尝试,然后再进行测试。话虽如此,创建和 GC 处理短暂的对象——甚至是其中的很多——是 JVM 特别擅长的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2017-12-09
    • 2019-11-30
    相关资源
    最近更新 更多