Java 关于同步的问题

Java 关于同步的问题,java,operating-system,Java,Operating System,使用同步会降低程序的执行速度。有什么方法可以提高执行速度吗?您有没有测量过执行速度减慢的程度(如果有) 早期的JVM在使用同步时受到了惩罚。然而,多年来,这种情况已大大改善。我不会担心同步时的性能损失。将有更多的候选人进行优化。 分析代码,找出真正的瓶颈所在 仔细地重新分析你的关键区域。很容易将同步应用得太广泛 有时,更改算法可能会导致完全不同的同步配置文件。但这并不总是有积极的影响 说同步构造会减慢执行速度,就像说降落伞会减慢跳伞者的速度一样。不带会更快,但这不是重点。同步是有目的的 要提高执

使用同步会降低程序的执行速度。有什么方法可以提高执行速度吗?

您有没有测量过执行速度减慢的程度(如果有)

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

  • 分析代码,找出真正的瓶颈所在
  • 仔细地重新分析你的关键区域。很容易将同步应用得太广泛
  • 有时,更改算法可能会导致完全不同的同步配置文件。但这并不总是有积极的影响
说同步构造会减慢执行速度,就像说降落伞会减慢跳伞者的速度一样。不带会更快,但这不是重点。同步是有目的的

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


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

您可能希望同步代码块,而不是整个方法。没有它,你将冒更多的风险

并不是说“同步会降低程序的速度”——它只在同步操作非常频繁的情况下,或者当您实际上有很多线程在争夺它们时才会发生。对于大多数应用程序来说,两者都不正确

此外,通过使用巧妙的数据结构或硬件原语,可以安全地实现某些类型的并发操作,而无需同步。示例:


你为什么特别提到原语?这是否意味着同步对象不会发生减速?一些代码示例作为证据可能也会有很大帮助。我很抱歉。它可以是基本体或对象。