多线程JUC 第2季 AQS源码分析以及公平锁

  • Post author:
  • Post category:其他


一 AQS

1.1 AQS的介绍

AQS : 抽象队列同步器。主要是用来解


决锁分配给谁的问题。



1.2 代码逻辑


AQS 使用


一个volitile的int类型变量


来表示同步状态。通过内置


的FIFO队列来完成资源获取的排队


工作,并将每条要去抢占资源的线程封装成一个Node节点来


实现锁的分配





通过cas来


实现对state值的修改。

1.3 AQS的Acquire方法

二 公平锁和非公平锁

2.1 公平锁和非公平锁的区别联系

非公平锁比公平锁少一个判断:


!hasQueuedPredecessors()  此方法判断是否需要排队。

公平锁:持有锁的线程执行完,从等待队列中按照先来先到,先执行原则,等待队列的先到线程获取资源,释放锁的这个线程排到等待队列的后面。

非公平锁: 不管是否有等待队列,不讲武德,如果能获取锁,则立刻执行。



版权声明:本文为u011066470原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。