首页 > 开发 > Java > 正文

java利用CountDownLatch实现并行计算

2024-07-14 08:42:34
字体:
来源:转载
供稿:网友

本文实例为大家分享了利用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);  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表