1. 和Aqs的关系

并发编程:ReentrantLock

2. 非公平锁加锁流程

  1. 第一个线程t1,第一次加锁,没有加锁之前 aqs(NonfairSync)的状态

并发编程:ReentrantLock
2. t1加锁成功后

并发编程:ReentrantLock
3. 第二个线程t2尝试加锁,如果加锁成功

并发编程:ReentrantLock
4. t2加锁失败,会创建队列

  • t == null队列还没有创建;
  • compareAndSetHead(new Node())创建一个Thread=null的head;
  • node.prev = t; t2节点的prev指向head;
  • t.next = node; head的next节点指向t2。

并发编程:ReentrantLock
并发编程:ReentrantLock
6. 第三个线程t3尝试加锁,并且t1没有释放锁,t2还在队列中

并发编程:ReentrantLock

相关文章:

  • 2021-05-07
  • 2021-11-26
  • 2021-08-21
  • 2022-12-23
  • 2021-12-26
  • 2021-08-18
  • 2021-10-18
猜你喜欢
  • 2021-08-02
  • 2021-05-12
  • 2022-01-25
  • 2021-12-10
  • 2022-02-04
  • 2021-07-13
  • 2021-10-22
相关资源
相似解决方案