zoukankan      html  css  js  c++  java
  • CountdownLatch && Semaphore && CyclicBarirer

    这三都是使用了AQS的共享方式。其中 CyclicBarirer 是基于 reentainLock , 另外的是 直接基于AQS (tryAcquireShare && tryReleaseShare)

    1、CountdownLatch,门栓 

      await() --> 同步队列waiting,park

      countDown() --> count == 0 ,依次通知所有线程继续执行,unpark

    一组 await() 的线程,等待着 count == 0 ,继续执行。

    2、CyclicBarirer ,循环屏障

    一组线程到达屏障 后继续执行。

      await() --> != 0 阻塞在condition队列上 , == 0 -->sinalAll()

    循环重置 reset()

    3、Semaphore 信号量 ,操作系统的信号量可以为负数,表示等待的线程数

      acquire()  --> 有许可继续执行,没有许可 同步队列waiting,park

      release() --> 增加许可,叫醒同步队列上的线程,unpark

     限制并行程度,dubbo 服务端 限制最大并行数采用的semaphore

  • 相关阅读:
    [HDU3487]Play with Chain
    [HDU3436]Queue-jumpers
    [HDU2475]Box
    [HDU1890]RoboticSort
    [BZOJ1500]维修数列
    [POJ3580]SuperMemo
    [POJ3481]Double Queue
    [BZOJ1269]文本编辑器editor
    简单的sql注入
    图片马的制作以及菜刀的使用
  • 原文地址:https://www.cnblogs.com/hansc-blog/p/9406339.html
Copyright © 2011-2022 走看看