第七章

作者: YoungChen_ | 来源:发表于2019-03-07 20:50 被阅读0次

    <meta charset="utf-8">

    AbstractQueuedSynchronizer——AQS 抽象排队同步器

    AQS实现:

    1.使用Node实现FIFO队列

    2.利用了一个Int类型表示状态 state

    3.使用继承来实现

    子类通过继承并通过实现它的方法管理其状态{acquire 和 release}的方法操作状态

    可以同时实现排他锁和共享锁模式(独占,共享)

    AQS功能分为独占控制功能和共享控制功能,所有子类要么实现和使用独占API,要么使用和实现共享锁的API,不会同时使用。

    AQS实现大致思路:

    AQS内部实现一个CLH队列来管理锁,线程首先尝试获取锁,失败,将当前线程以及等待状态等信息包成一个Node节点,加入到同步队列(sync queue)中,接着不断循环尝试获取锁,条件是:当前节点为head的节点直接后继才会尝试,如果失败就阻塞自己,直到被唤醒,当持有锁的线程释放锁时,会唤醒队列中的后继线程。

    clipboard.png

    AQS同步组件:

    CountDownLatch

    Semaphore

    CyclicBarrier

    ReentrantLock

    Condition

    FutureTask

    CountDownLatch 计数器,阻塞线程,保证子线程执行完成后再执行主线程(一定时间内,执行子线程数量内)

    其他的阻塞线程方法:https://blog.csdn.net/wk1134314305/article/details/74094406

    Semaphore 信号量,控制并发访问的线程个数,控制资源有限访问数

    相关文章

      网友评论

          本文标题:第七章

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