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

    作用:多个共享资源互斥的使用。
      并发限流,控制最大的线程数。
  • 相关阅读:
    SQL SERVER列转换行及UNPIVOT
    25.元素,元素内容和元素属性 Walker
    16.开发工具介绍 Walker
    13.前后端程序浅解 Walker
    21.创建标准的html文件 Walker
    15.html和html5 Walker
    24.代码注释 Walker
    22.文档的基本结构 Walker
    23.单标签和双标签 Walker
    26.代码书写规范 Walker
  • 原文地址:https://www.cnblogs.com/jzspace/p/12951182.html
Copyright © 2011-2022 走看看