//用最短的时间计算出求和结果。
//输入:一个整数数组,里面有100W个整数
//输出:求和结果,求和使用的时间
class Caculate implements Runnable{
int batchArr[];
int start;
int end;
AtomicInteger batchSum;
CountDownLatch cdh;
public Caculate(int batchArr[], int start, int end, AtomicInteger batchSum, CountDownLatch cdh){
};
public void run(){
// TODO 简单的累加就搞定
}
}
public static void main(String[] args){
// 大数组分好组
// 线程分任务
// 线程计数到0,所有线程完成任务
// 累加一把
}
题主是个多线程白痴....请各位大佬
把这个框架补充完整
你将100W个整数平均分给每条线程去执行就行了
我TM试了,单线程最快。
package ask;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Random;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
public class ArraySum {
public static int getRandomNumberUsingNextInt(int min, int max) {
Random random = new Random();
return random.nextInt(max - min) + min;
}
public static int calc(int[] arr1, int[] arr2) throws ExecutionException, InterruptedException {
var executor = ForkJoinPool.commonPool();
var f1 = executor.submit(() -> Arrays.stream(arr1).sum());
var f2 = executor.submit(() -> Arrays.stream(arr2).sum());
return f1.get() + f2.get();
}
public static void main(String[] args) {
int[] arr = new int[1000000];
BigInteger sum = new BigInteger("0");
for (int i = 0; i < 1000000; i++) {
arr[i] = getRandomNumberUsingNextInt(0, 10);
sum = sum.add(new BigInteger(String.valueOf(arr[i])));
}
System.out.println("Sum on Main Thread= " + sum);
int[] arr1 = Arrays.copyOfRange(arr, 0, 500000);
System.out.println(arr1.length);
int[] arr2 = Arrays.copyOfRange(arr, 500000, 1000000);
System.out.println(arr2.length);
try {
System.out.println(calc(arr1, arr2));
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y