2010-06-15 59 views
3

我正試圖在我的應用程序中減少特定代碼路徑上的鎖定爭用。要識別高鎖爭用的代碼,我將YourKit連接到我的應用程序並使用「監視器」選項卡,並查看獲取哪些鎖已導致我關心的線程阻塞。我的最終目標是在YK GUI的「線程」選項卡中爲此線程沒有紅點。YourKit報告ReentrantLocks?

通常,使用固有鎖讀取/讀取鎖定會引起爭用,因此可以通過使用ReentrantLock而不是固有鎖來改善這些爭用。事實上,當我嘗試這個時,YourKit報告的爭用較少。這些信息是否可靠? YourKit是否正確報告ReentrantLock的使用情況?

我在帶有Sun 1.6u18 32位JVM的Solaris 10上使用YourKit 8.0.24。

回答

0

Looks like YourKit截至目前在「線程」選項卡中並未報告ReentrantLock被阻止。

-2

而不是遵循鎖定方法嘗試設計您的應用程序無鎖。 通過使用volatile變量和java.util.concurrent中的類,您通常可以編寫無鎖定算法,因此不存在鎖爭用。

+2

是的,我知道,不容易,但會帶來更好的表現。 「實踐中的Java併發」一書非常適合大多數無鎖編程的更多方面。 – 2010-06-15 15:47:34