@layer
請參閱:
http://flierlu.spaces.live.com/Blog/cns!3B002B2C3F5C8E36!160.entry
文中介紹了一種基于預期的鎖定策略。
文中講到:
“事實上,JVM 可以根據運行時信息選擇性合并同類型鎖。隨著現在機器自動代碼生成的廣泛引用,可以預期這種基于行為對鎖進行合并的思路會非常有用。“、
“這些問題(同步很慢、把類和方法聲明為final可以提高性能、不可變對象是性能毒藥)的出現,往往是因為使用者對 JVM 的實現和優化思路不熟悉導致的。實際上 HotSpot 自從 JDK 1.3 版本以后,實際上有了非常大的進步,無論是從功能還是性能上,都已經遠遠超出了某些人的預期。而在可以預見的 Mustang 和 Dolphin 中,更高級和動態的優化還會不斷加入進來,并從 JVM 一級對應用產生透明的性能提升。”
實際上,看一下我在本篇文章中的第一個例程的運行結果,你就會發現,JVM的確是從語義上合并了兩段同步塊的鎖。而從常理上講,這樣的鎖分配策略在保證線程運行流暢性方面是相對比較優化的方案。