@layer
请参阅:
http://flierlu.spaces.live.com/Blog/cns!3B002B2C3F5C8E36!160.entry
文中介绍了一种基于预期的锁定策略。
文中讲到:
“事实上,JVM 可以根据运行时信息选择性合并同类型锁。随着现在机器自动代码生成的广泛引用,可以预期这种基于行为对锁进行合并的思路会非常有用。“、
“这些问题(同步很慢、把类和方法声明为final可以提高性能、不可变对象是性能毒药)的出现,往往是因为使用者对 JVM 的实现和优化思路不熟悉导致的。实际上 HotSpot 自从 JDK 1.3 版本以后,实际上有了非常大的进步,无论是从功能还是性能上,都已经远远超出了某些人的预期。而在可以预见的 Mustang 和 Dolphin 中,更高级和动态的优化还会不断加入进来,并从 JVM 一级对应用产生透明的性能提升。”
实际上,看一下我在本篇文章中的第一个例程的运行结果,你就会发现,JVM的确是从语义上合并了两段同步块的锁。而从常理上讲,这样的锁分配策略在保证线程运行流畅性方面是相对比较优化的方案。