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

    作用:多个共享资源互斥的使用。
      并发限流,控制最大的线程数。
  • 相关阅读:
    hibernate缓存清除(转)
    hibernate缓存
    hibernate延迟加载
    session进行增删改查操作
    curl命令详解
    CURL 宏定义列表
    CURL常用命令---样例
    打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)
    curl断点续载
    CURL常用命令
  • 原文地址:https://www.cnblogs.com/jzspace/p/12951182.html
Copyright © 2011-2022 走看看