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

时间:2016-03-03 16:10:25

标签: java multithreading locking

假设我有一个java.util.concurrent.locks.Lock

的实例

是否可以确定当前线程是否持有锁?

假设锁定对象仅实现Lock接口,并且不一定是可重入的,因此调用locktryLock可能不是检查锁定的好方法。

1 个答案:

答案 0 :(得分:12)

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

但请注意,正如文档所述,此方法的主要目的是调试,断言和测试。如果您需要它用于正常的程序逻辑,那么可能有一些更好的解决方案。