公平锁获取锁流程图
2023-05-18 20:28:09 5 举报
锁 重入锁 公平锁
作者其他创作
大纲/内容
重入锁减一
3,既没有人获取锁,也不是当前线程
否
死循环,1,判断当前线程的前置节点是否是头结点,2.如果是则尝试获取锁
通过CAS将任务加入到阻塞队列尾部
将任务加入阻塞队列
尝试获取锁失败
公平锁获取锁流程图
获取锁成功
lock
判断当前线程是否需要阻塞
成功
是
获取锁失败,将任务加入阻塞队列
尝试获取锁
阻塞,等待唤醒
2,当前线程与对象的当前线程是一个
没有尾节点
有尾节点
1,否
死循环并通过CAS初始化阻塞队列
公平锁解锁过程
是否已经有线程获取锁
则重入锁
队列中没有线程比当前线程等的时间长,并且通过CAS获取锁成功。
死循环获取锁
死循环并通过CAS将任务加入阻塞队列
加锁成功
free=trueExclusiveOwnerThread=null
尝试解锁
加入队列失败
0 条评论
下一页