首页 > 编程 > Java > 正文

Java.utils.concurrent包中的几个有用的类(CountDownLatch、CyclicBarrier、Semaphore)

2019-11-06 07:34:12
字体:
来源:转载
供稿:网友

CountDownLatch

它是一个计数器,类中有两个重要的方法:countDown(),await() .new的时候需要用一个整数参数 。设置线程计数的数量 。然后在每个线程中会调用countDown方法(就是计数器减一)。之后我们可以调用await方法等待所有的线程都结束后才去执行后面的任务。

CyclicBarrier

设置线程阻塞。其构造函数可以接受一个数或者一个数和一个Runnable实例。即可以设置屏障的数量和屏障数量达到后需要执行的线程。在每个线程里面会调用await方法,让当前线程在这个地方阻塞起来,知道屏障数达到设定值的时候所以的线程才开始运行(即执行上面构造函数传入的Runnable实例的run方法)。

Semapphore

用来控制流量的。其构造函数接受一个数字。类中两个有用的方法acquire,release 。在线程执行前首先会申请一个许可证也就是调用acquire方法,线程结束的时候就会归还许可证也就是调用release 。当外界对一个应用没有一个流量概念的时候,很有可能超过其能承受的负载,所以我们可以在其中加入Semappore控制,技术外面创建了更多的线程,其实也只能有限制的那么多线程能同时执行。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表