【发布时间】:2016-03-03 16:10:24
【问题描述】:
假设我有一个 java.util.concurrent.locks.Lock 的实例
能否判断当前线程是否持有锁?
假设锁对象只实现了Lock接口,不一定是可重入的,那么调用lock或tryLock可能不是检查锁的好方法。
【问题讨论】:
标签: java multithreading locking
假设我有一个 java.util.concurrent.locks.Lock 的实例
能否判断当前线程是否持有锁?
假设锁对象只实现了Lock接口,不一定是可重入的,那么调用lock或tryLock可能不是检查锁的好方法。
【问题讨论】:
标签: java multithreading locking
Lock 接口本身不提供这样的功能,但是它的通用实现者ReentrantLock 有这样的方法:ReentrantLock.isHeldByCurrentThread()。
但是请注意,正如文档所述,此方法的主要目的是调试、断言和测试。如果您需要它用于正常的程序逻辑,那么可能有一些更好的解决方案。
【讨论】:
Lock 类型,需要进行一些重构:)