【高并发专题】-JUC-AQS及拓展组件详解
日期: 2019-06-12 分类: 个人收藏 327次阅读
本篇主要介绍AQS原理及其构建的各种同步装置和锁.
AQS是类AbstractQueuedSynchronizer的缩写,位于java.util.concurrent包下,可以用来构建锁,各种同步装置.其底层的数据结构如下图:
是基于链表实现的FIFO队列,队列中维护了等待线程的各种信息.
AQS内部使用int类型的state来表示状态,state=0表示还没有线程获取锁,1表示已有线程获取到锁,>1表示重入锁的数量.
AQS是基于模板方法模式设计的,使用者需要继承AQS并覆写其中的部分方法,子类通过父类提供的acquire和release方法来修改队列中的节点状态.
AQS可以同时实现排它锁和共享锁(独占,共享)
AQS其内部维护了一个CLH队列( 除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐