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

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

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

假设lock对象只实现了Lock接口,并且不一定是可重入的,因此调用lock或tryLock可能不是检查锁定的好方法.

解决方法

Lock接口本身不提供这样的功能,但它的常用实现者reentrantlock有这样的方法ReentrantLock.isHeldByCurrentThread().

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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...