是否有任何工具或方法可以获取有关Java中锁的所有信息?
例如,如果有一个Java程序,它将创建两个线程,并且两个线程都需要某些变量的锁。是否有任何工具可以输出信息,例如哪个线程锁定了哪个变量?
最佳答案
您可以通过ThreadMXBean使用ThreadInfo#getLockedSynchronizers()(JavaDoc)来获取线程当前拥有的锁上的LockInfo数组。 LockInfo只会告诉您锁的类名和身份哈希码,但这足以跟踪锁对象。
是否有任何工具或方法可以获取有关Java中锁的所有信息?
例如,如果有一个Java程序,它将创建两个线程,并且两个线程都需要某些变量的锁。是否有任何工具可以输出信息,例如哪个线程锁定了哪个变量?
最佳答案
您可以通过ThreadMXBean使用ThreadInfo#getLockedSynchronizers()(JavaDoc)来获取线程当前拥有的锁上的LockInfo数组。 LockInfo只会告诉您锁的类名和身份哈希码,但这足以跟踪锁对象。