1. 首页
  2. 编程语言
  3. Java
  4. ReentrantLock源码详解--条件锁

ReentrantLock源码详解--条件锁

上传者: 2022-05-13 09:25:01上传 PDF文件 172.65 KB 热度 11次

条件锁的await()是在其它线程signal()的时候唤醒的吗?条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等待某个条件的出现才可以继续处理时使用的一种锁。在java中,条件锁的实现都在AQS的ConditionObject类中,ConditionObject实现了Condition接口,下面我们通过一个例子来进入到条件锁的学习中。可以看到条件锁中也维护了一个队列,为了和AQS的队列区分,我这里称为条件队列,firstWaiter是队列的头节点,lastWaiter是队列的尾节点,它们是干什么的呢?新建一个条件锁最后就是调用的AQS中的ConditionObject类来实例化条件锁。condition.await()方法,表明现在要等待条件的出现。这里有几个难理解的点:Condition的队列和AQS的队列不完全一样;

用户评论