zoukankan      html  css  js  c++  java
  • 并发线程辅助类

    1、CountDownLatch  减法计数器

    CountDownLatch 作为计数器使用,顾名思义,是做 - - 的计数器。

    在必须要执行某些任务的时候使用此辅助。

    如下图可见,未等待计数器归零,则有可能出现有的学生还没出去就已经关门了。

     解决办法就是添加一个await()等待该计数器归零。在执行其他操作。

     原理:

    count.countDown();//计数器-1操作
    count.await();//等待计数器归零,在执行下面操作
    每次有线程调用countDown()数量-1,假设计数器变为0,count.await()就会被唤醒,继续执行。

    2、CyclicBarrier  加法计数器

    原理:

    new CyclicBarrier(int temp,Runnable)  当计数器达到temp之后执行Runnable内容

    barrier.await();每个线程执行完之后计数器+1,直到加到temp之后,运行Runnable内容
    当所以执行的线程数量<temp时,则程序一直处于等待状态。

    3、SemaPhore  信号量

    约定一个线程数量,超出的线程部分等待,运行的线程结束之后,等待的线程在进入执行操作。

    semaphore.acquire();//获取得到   加入线程约定的数量已经满了,那么其他线程在外面等待,等待里面的线程被释放。   相当于-1操作  得到之后,按上面例子来说,就是剩余的停车位-1
    semaphore.release();//释放   会将当前信号量释放。然后唤醒等待的线程。                    相当于+1操作  释放之后,按上面例子来说,就是剩余的停车位+1

    作用:多个共享资源互斥的使用。
      并发限流,控制最大的线程数。
  • 相关阅读:
    hdu2604 矩阵快速幂
    自己对有上下界的网络流的理解
    自己对有上下界的网络流的理解
    POJ 2396 构造矩阵(上下流)
    POJ 2396 构造矩阵(上下流)
    hdu4940 有上下界的无源可行流判断
    hdu4940 有上下界的无源可行流判断
    hdu4515 小模拟
    hdu4515 小模拟
    hdu4901 枚举状态(找集合对S(xor) ==T(and))
  • 原文地址:https://www.cnblogs.com/jzspace/p/12951182.html
Copyright © 2011-2022 走看看