美文网首页程序员
AQS(3):release

AQS(3):release

作者: Cafebaby | 来源:发表于2016-04-03 11:36 被阅读117次

release系列方法用于实现解锁一个或多个线程,该方法可用于实现unlock。该方法首先会调用tryRelease方法,这个方法需要子类实现,尝试设置状态值以反映独占模式下的release行为。如果返回true,则需要解锁后继节点。下面我们直接看图。

release().png

该方法的核心就是当tryRelease成功后,解锁头结点的下一个为被取消的后继节点。
独占模式下就只有这样一个release方法。而在共享模式下,区别就是调用的是tryReleaseShared方法,并且在解锁后继的时候要确保release被传播。此时会判断头结点状态,如果是SIGNAL,那么就解锁后继节点。如果是0,那么设置状态为PROPAGATE。

相关文章

网友评论

    本文标题:AQS(3):release

    本文链接:https://www.haomeiwen.com/subject/sdlulttx.html