AQS

作者: watermountain | 来源:发表于2019-03-23 10:26 被阅读0次

    AQS 是一个用来构建锁和Synchronizer(同步器) 的框架。

    使用AQS 能够简单且高效地构造出应用广泛的大量的Synchronizer。

    除了下面的类,SynchronousQueue 和 FutureTask 也是构建于AQS 之上的。

    AQS 解决了实现一个Synchronizer 的大量细节,比如等待线程的FIFO 队列。

    基于AQS 构建的Synchronizer 只可能在一个点上发生阻塞,这样降低了上下文切换的开销,并提高了吞吐量。AQS 的设计充分考虑了可伸缩性。

    一个基于AQS 的同步器所执行的基本操作,是一些不同形势的获取和释放操作。

    获取操作是状态依赖的操作,总能够阻塞。

    借助锁和信号量,“获取”的含义变得相当直观-获取锁或者许可-并且调用者可能不得不去等待,直到同步器处于可发生的状态。

    为了让一个类具有状态依赖性,它必须拥有一些状态。同步类中有一些状态需要管理,这项任务由AQS负责:

        AQS 关了一个关于状态信息的单一整数,状态信息可以通过protected 类型的getState、setState 和 compareAndSetState 等方法进行操作。这可以用户表现任何状态:

    相关文章

      网友评论

          本文标题:AQS

          本文链接:https://www.haomeiwen.com/subject/pkmeyqtx.html