AbstractQueuedSynchronizer(简称 AQS)是 Java 中用于实现锁和同步器的一个基础框架,位于 java.util.concurrent.locks 包中。它提供了一种基于 FIFO(先进先出)队列的机制,帮助构建多线程之间的同步工具,比如常见的 ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier 等都依赖于 AQS 的实现。
 
 
 
class MyLock extends AbstractQueuedSynchronizer {
    // 尝试获取锁
    @Override
    protected boolean tryAcquire(int arg) {
        if (compareAndSetState(0, 1)) {
            setExclusiveOwnerThread(Thread.currentThread());
            return true;
        }
        return false;
    }
    // 尝试释放锁
    @Override
    protected boolean tryRelease(int arg) {
        if (getState() == 0) {
            throw new IllegalMonitorStateException();
        }
        setExclusiveOwnerThread(null);
        setState(0);
        return true;
    }
    public void lock() {
        acquire(1);
    }
    public void unlock() {
        release(1);
    }
}




















