java利用CountDownLatch实现并行计算
作者:crz_pp
这篇文章主要介绍了java利用CountDownLatch实现并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了利用CountDownLatch实现并行计算的具体代码,供大家参考,具体内容如下
import java.util.concurrent.CountDownLatch;
/**
* @Author pipi
* @Date 2018/10/15 13:56
**/
public class ParallelComputing {
private int[] nums;
private String[] info;
private CountDownLatch countDownLatch;
public ParallelComputing(String[] info) {
this.info = info;
int size = info.length;
nums = new int[size];
this.countDownLatch = new CountDownLatch(size);
}
public void calc(String line, int index) throws InterruptedException {
String[] numbers = line.split(",");
int total = 0;
for (String num : numbers) {
total += Integer.parseInt(num);
}
Thread.sleep(5000);
nums[index] = total;
countDownLatch.countDown();
System.out.println(Thread.currentThread().getName() + "执行计算任务..." + line + ",结果为:" + total);
}
public void sum() {
System.out.println("汇总线程开始执行...");
int total = 0;
for (int i : nums) {
total += i;
}
System.out.println("汇总线程结束执行...结果为:" + total);
}
public void calcSum() throws InterruptedException {
int size = info.length;
for (int i = 0; i < size; i++) {
final int j = i;
new Thread(() -> {
try {
calc(info[j], j);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
countDownLatch.await();
sum();
}
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
String[] info = {
"2,22",
"3,33",
"232,32,76,84",
"99,45,1"
};
ParallelComputing parallelComputing = new ParallelComputing(info);
parallelComputing.calcSum();
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Java骚操作之CountDownLatch代码详解
- java多线程CountDownLatch与线程池ThreadPoolExecutor/ExecutorService案例
- java并发编程专题(八)----(JUC)实例讲解CountDownLatch
- 详解java CountDownLatch和CyclicBarrier在内部实现和场景上的区别
- Java线程并发工具类CountDownLatch原理及用法
- JAVA CountDownLatch(倒计时计数器)用法实例
- JAVA CountDownLatch与thread-join()的区别解析
- 浅谈java并发之计数器CountDownLatch
- JAVA多线程CountDownLatch使用详解
- Java并发编程之CountDownLatch源码解析
