AQS的功能主要分爲兩類:獨佔鎖和共享鎖。在它的所有子類中,要麼實現了它的獨佔功能的API,要麼實現了共享功能的API,但不會同時使用兩套API,即使是ReentrantReadWriteLock,也是通過兩個內部類:讀鎖和寫鎖,分別使用兩套API來實現的。
- 當AQS的子類實現獨佔功能時,如ReentrantLock,資源是否可以被訪問被定義爲:只要AQS的state變量不爲0,並且持有鎖的線程不是當前線程,那麼代表資源不可訪問。
- 當AQS的子類實現共享功能時,如CountDownLatch,資源是否可以被訪問被定義爲:只要AQS的state變量不爲0,那麼代表資源不可以爲訪問。