【问题标题】:Question regarding synchronization关于同步的问题
【发布时间】:2011-02-26 13:23:25
【问题描述】:

使用同步会减慢程序的执行速度。有没有办法提高执行速度?

【问题讨论】:

  • 你为什么特别提到原语?这是否意味着同步对象不会出现减速?一些代码示例作为证据也可能有很大帮助。
  • 对不起。它既可以是基元也可以是对象。

标签: java operating-system


【解决方案1】:

“同步会减慢程序”的说法根本不正确——它仅在同步操作非常频繁地完成时,或者当您实际上有很多线程在争夺它们时才会这样做。对于大多数应用程序来说,两者都不是真的。

此外,通过使用巧妙的数据结构或硬件原语,某些类型的并发操作可以在不同步的情况下安全地实现。例子:

【讨论】:

    【解决方案2】:

    您可能希望同步代码块而不是整个方法。没有它,您将面临更大的风险!

    【讨论】:

      【解决方案3】:

      说同步结构会减慢执行速度就像说降落伞会减慢跳伞运动员的速度。不使用会更快,但这不是重点。同步是有目的的。

      要提高执行速度,只需正确应用同步即可。

      例如,使用生产者/消费者设计模式可以帮助您减少代码中所需的同步构造的数量。

      【讨论】:

        【解决方案4】:
        • 分析您的代码,找出真正的瓶颈所在。
        • 仔细重新分析您的关键区域。过于广泛地应用同步非常容易。
        • 有时更改算法会导致完全不同的同步配置文件。不过,这并不总能产生积极影响!

        【讨论】:

          【解决方案5】:

          您是否测量过减速的幅度(如果有)?

          早期的 JVM 在使用同步时会受到惩罚。然而,多年来,这种情况已经大大得到改善。同步时我不会担心性能损失。将会有更多的优化候选者。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-04-29
            • 2015-04-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多