讲道理,JUC 不只是代码写得好,注释写的也是真的好啊


1. AQS API


AQS 的定位在于实现了一个同步器的框架,能够作为各种同步器的基础。整体来说,这个同步器框架为你提供了一套基础的 API,包括但不限于:

  1. acqure - 独占式的抢占锁
  2. acquireInterruptibly - 独占式抢占且响应中断异常
  3. tryAcquireNanos - 尝试在特定时间内抢占
  4. acquireShared - 共享式抢占(与独占互斥)
  5. release - 释放抢占的独占锁
  6. releaseShared - 释放抢占的共享锁

这些API 可以用来实现各种锁,但在 AQS 的实现来说,它的实现描述了如何控制:

并且,由于它采用了模板设计模式,任何人可以轻易的扩展 AQS 来实现自定义的同步器和锁。