讲道理,JUC 不只是代码写得好,注释写的也是真的好啊
AQS 的定位在于实现了一个同步器的框架,能够作为各种同步器的基础。整体来说,这个同步器框架为你提供了一套基础的 API,包括但不限于:
acqure
- 独占式的抢占锁acquireInterruptibly
- 独占式抢占且响应中断异常tryAcquireNanos
- 尝试在特定时间内抢占acquireShared
- 共享式抢占(与独占互斥)release
- 释放抢占的独占锁releaseShared
- 释放抢占的共享锁这些API 可以用来实现各种锁,但在 AQS 的实现来说,它的实现描述了如何控制:
并且,由于它采用了模板设计模式,任何人可以轻易的扩展 AQS 来实现自定义的同步器和锁。