嵌套同步塊是否比正常同步塊更快進入?或者,例如,以下哪個例程更快:嵌套同步的速度
void routine1(SyncClass a) {
a.syncMethod1();
a.syncmethod2();
a.syncMethod1();
}
void routine2(SyncClass a) {
synchronized(a) {
a.syncMethod1();
a.syncmethod2();
a.syncMethod1();
}
}
這些方法是同步的。我正考慮在不需要線程安全的情況下使用線程安全對象。所以併發級別不受影響。
另外,答案平臺是否依賴?
你必須考慮的是在進行細粒度同步時的正確性。至於答案例程2速度更快,除非JVM粗加顯示器並像例程2那樣編譯例程1。鎖定/解鎖沒有固有的好處,除非中間有一些代碼。 – bestsss
@bestsss在什麼情況下JVM會使顯示器變得粗大,以及爲什麼,究竟是什麼意思?你有鏈接到文檔? – warren
顯示器粗化是一種避免頻繁進入顯示器的技術,因爲它不是免費的操作,需要CAS。一旦你有關鍵字(鎖定變粗),谷歌往往會產生相當不錯的結果 - 所以最初的java6白皮書:http://java.sun.com/performance/reference/whitepapers/6_performance.html#2.1.2 – bestsss