AQS(3):release

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

release().png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容