AbstractQueuedSynchronizer
2016-07-29 10:17:48 18 举报
AbstractQueuedSynchronizer
作者其他创作
大纲/内容
N
是否挂起?
返回
成功获取锁?
成功释放锁?
寻找后续需要唤醒Node
Y
开始
调用子类tryActuire尝试获取锁
LockSupport.unpark(s.thread)唤醒Node的线程
被唤醒
调用unparkSuccessor
调用shouldParkAfterFailedAcquire判断是否需要挂起
release
调用子类tryRelease尝试获取锁
调用acquireQueued
acquire
调用addWaiter创建Node加入到CLH队列
LockSupport.park(this)线程挂起
判断prev是否为head
失败
收藏
0 条评论
下一页
为你推荐
查看更多