如果您的应用程序主要是单线程的,那么在进行过多锁定时,您可能不会看到性能下降或性能下降很少。
通常,当使用 java.concurrent 库或内置的 synchronized 关键字时,可以非常快速有效地获取单个锁。他们使用锁省略、自适应锁定和锁粗化(参见Mustang 中的同步优化)等技术,这基本上意味着编译器和/或库会做一些非常聪明的事情来优化锁的使用。
这在真正不需要锁的情况下尤其明显;编译器将其优化掉。
但是,当许多线程需要获取相同的锁时,您最终会注意到,对于纯计算问题,内核的 CPU 负载永远不会达到 100%。实际上,某些事情并没有尽可能快地进行,而您的 CPU 只是闲置。
在没有(大量)IO 的情况下,这通常是过度的迹象,lock contention因此这确实会降低整体系统性能。
| 归档时间: |
|
| 查看次数: |
1756 次 |
| 最近记录: |