使用Condition来模拟生产消费
- 1. 关于ReentrantLock 和condition的认知?
- 2.使用condition实现生产者-消费者
1. 关于ReentrantLock 和condition的认知?
/*Q: ReentrantLock是如何实现管理锁和线程的?A: ReentrantLock是并发包中 一个类,它实现了Lock接口,提供了比内置synchronized关键字更细粒度的锁管理和线程控制能力。ReentrantLock的实现基于AbstractQueuedSynchronizer(AQS)框架,以下是其核心机制概述:1. 内部类Sync: ReentrantLock里面定义了一个抽象静态内部类Sync,继承自AbstractQueuedSynchronizer.Sync是锁实现的基础。它有两个子类:FairSync和UnFairSync,分别对应不同的锁获取策略。2. 状态管理(State):AQS通过一个名为state的原子整数变量来表示锁的状态。对于ReentrantLock,这个状态值表示锁被重入的次数。当线程第一次获取锁时,state值从0变为1;每次重入,state值递增。