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