zoukankan      html  css  js  c++  java
  • AQS详解

    AQS依赖于一个FIFO队列和一个int表示的状态. 具体的实现类可以自己去保存别的状态, 但是只有这个int表示的状态是require和release的, 子类自己的状态是做辅助作用的.

    我们的同步器应该是通过把AQS的子类作为一个内部的代理类来实现,最好不要直接继承AQS,因为AQS的一些api最好不要暴露出去,容易被误用.

    AQS可以同时用来实现共享和非共享同步器. 他们共用一个FIFO queue

    AQS内部的ConditionObject类的作用是提供 Condition的作用

    对AQS的序列化只会序列化内部的int表示的状态,不会序列化queue,所以要想序列化,最好自己去做这方面的工作.

    想要使用AQS来作为一个同步器的基类,需要实现下面这几个方法.可以通过getState setState compareAndSetState 这些方法来对状态进行监控和修改

    * <li> {@link #tryAcquire}
    * <li> {@link #tryRelease}    
    * <li> {@link #tryAcquireShared}
    * <li> {@link #tryReleaseShared}
    * <li> {@link #isHeldExclusively}

    这些方法默认都是仍一个异常,这些方法的实现需要保证线程安全,一般需要最好比较短而且没有阻塞操作. 只要实现这些方法就好了, 其它方法都是final的.

  • 相关阅读:
    Android第四次作业
    Android第三次作业
    android 第一次作业
    团队作业-项目答辩
    团队作业2
    软工作业--团队作业2
    软件工程—团队作业1
    软件工程第一次作业
    Android第四次作业
    Android 第三次作业
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/7658505.html
Copyright © 2011-2022 走看看