CountDownLatch工具类介绍
来源:互联网 发布:淘宝网店实战宝典pdf 编辑:程序博客网 时间:2024/05/17 01:26
1.CountDownLatch描述
CountDownLatch是一个同步工具类,它允许一个或多个线程处于等待状态直到在其它线程中运行的一组操作完成为止。CountDownLatch用一个给定的计数来实现初始化。Await方法会一直处于阻塞状态,直到countDown方法调用而使当前计数达到零。当计数为零之后,所有处于等待的线程将被释放,await的任何后续调用将立即返回。这种现象只出现一次,计数是不能被重置的。
2.CountDownLatch工具类的使用案例
public class Calculator extends Thread{private CountDownLatch countDownLatch;private int groupNumber = 0;private int result = 0;public Calculator(CountDownLatch countDownLatch, int groupNumber) {this.countDownLatch = countDownLatch;this.groupNumber = groupNumber;}/** * 使用CountDownLatch工具类来实现10个线程对1~100的求和,每个线程对10个数进行求和。 * 第一个线程对1 – 10的数字求和 * 第二个线程对 11 – 20的数字求和 * 第三个线程对21 – 30 的数字求和 * ….. * 第十个线程对91 – 100的数字求和。 */@Overridepublic void run() {if (groupNumber < 1) {throw new IllegalArgumentException();}int sum = 0;int start = (groupNumber - 1) * 10 + 1;int end = groupNumber * 10;for (int i = start; i <= end; i++) {sum += i;}this.result = sum;System.out.println("线程"+Thread.currentThread().getName()+":求和结果为:" + sum);countDownLatch.countDown();}public static void main(String[] args) {CountDownLatch count = new CountDownLatch(10);for (int i = 1; i <=10; i++) {Calculator c = new Calculator(count, i);c.start();}try {count.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("执行完成");}}
执行结果:
线程Thread-0:求和结果为:55线程Thread-1:求和结果为:155线程Thread-2:求和结果为:255线程Thread-3:求和结果为:355线程Thread-4:求和结果为:455线程Thread-6:求和结果为:655线程Thread-7:求和结果为:755线程Thread-8:求和结果为:855线程Thread-5:求和结果为:555线程Thread-9:求和结果为:955执行完成
0 0
- CountDownLatch工具类介绍
- CountDownLatch同步工具类
- CountDownLatch同步工具类
- CountDownLatch类介绍
- 同步工具类之 CountDownLatch
- 多线程之CountDownLatch工具类
- 同步工具类-闭锁CountDownLatch
- Java并发工具类CountDownLatch
- java 并发工具类-CountDownLatch
- Java并发工具类CountDownLatch
- java并发中的协同工具类介绍-CountDownLatch-CyclicBarrier-Semphone-Exchanger
- CountDownLatch介绍
- CountDownLatch介绍
- 线程同步工具类——CountDownLatch
- Java5 多线程(六)--CountDownLatch 同步工具类
- java同步工具类之CountDownLatch
- 多线程 : CountDownLatch 同步工具类 用法
- Java并发工具类CountDownLatch和CyclicBarrier
- Point定义
- 空间和看见立刻就会空间和看见
- leveldb学习:DBimpl
- Linux共享文件到Windows
- springmvc_servlet.xml配置文件
- CountDownLatch工具类介绍
- Caffe中LMDB的使用
- 如何让自己的U盘加上logo
- 不可或缺的 sendEmail
- 使用webservice进行数据的传递
- 反射基础-笔记01
- POJ 1265Area(几何应用)
- 用viewPager实现简易循环播放页
- 笔试题8. LeetCode OJ (8) Nim Game