简单描述
AQS的指的是AbstractQueuedSynchronizer,实现了阻塞锁跟阻塞队列,大量了使用CAS。java.util.concurrent包下的ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。同步阻塞队列。
使用AbstractQueuedSynchronizer的时候只要是实现对应的几个方法
tryAcquire(int):独占方式。尝试获取资源,成功则返回true,失败则返回false。
tryRelease(int):独占方式。尝试释放资源,成功则返回true,失败则返回false。
tryAcquireShared(int):共享方式。尝试获取资源。负数表示失败;0表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。
tryReleaseShared(int):共享方式。尝试释放资源,如果释放后允许唤醒后续等待结点返回true,否则返回false。
isHeldExclusively():该线程是否正在独占资源。只有用到condition才需要去实现它。
AQS原理与应用
AQS,即AbstractQueuedSynchronizer,是Java并发包中关键的同步器类,实现阻塞锁和队列功能。ReentrantLock、Semaphore等并发类基于AQS,通过继承并实现tryAcquire等方法完成自定义同步组件。本文解析AQS核心方法,探讨其实现机制。
750

被折叠的 条评论
为什么被折叠?



