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