确定当前线程是否持有Java `Lock`

6
假设我有一个 java.util.concurrent.locks.Lock 的实例,
有可能确定当前线程是否持有锁吗?
假设锁对象仅实现了Lock接口,并且不一定是可重入的,因此调用locktryLock可能不是检查锁的好方法。
1个回答

12

Lock接口本身不提供此功能,但其常见实现类ReentrantLock有此方法:ReentrantLock.isHeldByCurrentThread()

然而需要注意的是,正如文档所述,此方法的主要目的是用于调试、断言和测试。如果您需要它来进行正常程序逻辑,那么可能存在更好的解决方案。


2
谢谢,只是确认一下。我目前已经将成员声明为“Lock”类型,并且需要进行一些重构 :) - arcyqwerty
哦,是的,我正在使用它进行断言,深入程序逻辑中,我想确保正确的锁被持有。感谢您推广良好的实践! - arcyqwerty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接