Flask接口签名sign原理与实例代码浅析
241
2023-01-21
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.slTCWvLGxjEeep(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.printStackTrTCWvLGxjEace();
}
}).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);
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~