锁的可重入性

package other.thread17;

import java.util.concurrent.locks.ReentrantLock;

public class DemoService {

    private ReentrantLock lock = new ReentrantLock();
    
    public void printA() {
        lock.lock();
        printB();
        System.out.println("HoldCountA:" + lock.getHoldCount());
        lock.unlock();
        System.out.println("HoldCountA2:" + lock.getHoldCount());
    }
    
    public void printB() {
        lock.lock();
        System.out.println("HoldCountB:" + lock.getHoldCount());
        lock.unlock();
        System.out.println("HoldCountB2:" + lock.getHoldCount());
    }
    
    public static void main(String[] args) {
        new DemoService().printA();
    }
}

image.png

方法getHoldCount()的作用是查询当前线程保持此锁定的个数。

方法getQueueLength()的作用是返回正等待获取此锁定的线程估计数。

方法getWaitQueueLength(Condition condition)的作用是返回等待与此锁定相关的给定条件Condition的线程估计数,比如有5个线程,每个线程都执行了同一个condition对象的await()方法,则调用getWaitQueueLength(Condition condition)方法时返回int的值是5。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容