AbstractQueuedSynchronizer(AQS)

AQS是并发容器里的同步器,从jdk1.5开始引入了并发包,java.util.concurrent,提供了一个基于first in first out的队列,可以用于构建锁和其它同步机制的基础框架。

下面看下AQS这个类的底层结构,底层使用了双向链表,也可以把它看成是一个队列,其中sync queue就是同步队列,它是双向链表,包括head节点和tail节点,head节点主要用于后续的调度。还有一个condition queue,它不是必须的,是一个单向链表,只有当使用中需要用到condition的时候,才会用到这个队列,并且可能会有多个condition queue。

JUC之AQS

AQS的设计

  • 使用node实现fifo队列,可以用于构建锁或者其他的同步装置的基础框架
  • 利用了一个int类型表示状态
  • 使用方法是继承
  • 子类通过继承并通过实现它的方法管理其状态{acquire 和 release}
  • 可以同时实现排他锁和共享锁模式(独占,共享)

AQS常用同步组件

  1. CountDownLatch,详细参阅java并发之CountDownLatch
  2. Semaphore,详细参阅java并发之Semaphore
  3. CyclicBarrier,详细参阅java并发之CyclicBarrier
  4. ReentrantLock,详细参阅java并发之ReentrantLock学习理解
  5. Condition,
  6. FutureTask,详细参阅JUC组件扩展(一):FutureTask理解
  7. ForkJoin,详细参阅JUC组件扩展(二)-JAVA并行框架Fork/Join(四):监控Fork/Join池
  8. BlockingQueue,详细参阅JUC组件扩展(三):BlockingQueue(阻塞队列)详解

更多目录:java并发包java.util.concurrent详解

 

相关文章:

  • 2021-12-26
  • 2021-08-24
  • 2022-02-09
  • 2022-02-26
  • 2022-12-23
  • 2021-09-03
  • 2021-12-18
  • 2022-01-20
猜你喜欢
  • 2021-12-17
  • 2021-08-13
  • 2021-04-11
  • 2022-12-23
  • 2021-07-02
  • 2021-07-21
  • 2021-05-31
相关资源
相似解决方案