使用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值递增。
释放锁时,state值递减,当减至0时,锁被完全释放。
3. 锁获取与释放:lo