我正在尝试减少应用程序中特定代码路径上的锁争用。为了识别具有高锁争用的代码,我将YourKit连接到我的应用程序并使用“监视器”选项卡,并查看获取哪些锁导致我关心的线程阻塞。我最终的目标是在YK GUI的“线程”选项卡中没有该线程的红点。
通常,争用源于使用内部锁定的读取/读取锁定,因此可以使用ReentrantLock
而不是内部锁来改进这些争用。事实上,当我尝试这个时,YourKit报告了较低的争用。这些信息可靠吗? YourKit是否正确报告了ReentrantLock的使用情况?
我在Solaris 10上使用带有Sun 1.6u18 32位JVM的YourKit 8.0.24。
答案 0 :(得分:0)
Looks like YourKit,截至目前,并未在“线程”标签中报告ReentrantLock
被屏蔽。
答案 1 :(得分:-2)
尝试将应用程序设计为lockfree,而不是遵循锁定方法。 使用volatile变量和java.util.concurrent中的类,您通常可以编写无锁的算法,因此没有锁争用。