【问题标题】:Determine if a Java `Lock` is held by the current thread确定当前线程是否持有 Java `Lock`
【发布时间】:2016-03-03 16:10:24
【问题描述】:

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

能否判断当前线程是否持有锁?

假设锁对象只实现了Lock接口,不一定是可重入的,那么调用locktryLock可能不是检查锁的好方法。

【问题讨论】:

    标签: java multithreading locking


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,确认一下。我目前有成员声明为Lock 类型,需要进行一些重构:)
    • 哦,是的,我将它用于断言,在程序逻辑的深处,我想确保持有正确的锁。感谢您推广良好做法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2023-03-19
    • 2011-04-02
    • 2011-09-28
    相关资源
    最近更新 更多