用JAVA语言编写一段程序,计算一个大的整数数组所有元素的总和,要求在双核系统中解决并利用到两个核。

用JAVA语言编写一段程序,计算一个大的整数数组所有元素的总和,要求在双核系统中解决并利用到两个核。因为题目是英文的,所以我不知道用中文怎么说,这里给出英文题目:Apro... 用JAVA语言编写一段程序,计算一个大的整数数组所有元素的总和,要求在双核系统中解决并利用到两个核。
因为题目是英文的,所以我不知道用中文怎么说,这里给出英文题目:
A programme is required to compute the sum of the elements in a large integer array.This programme will be executed on a dual-core machine.Write a solution that employs both cores to solve this problem.
展开
 我来答
隽淑珍艾丑
2019-04-03 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:24%
帮助的人:1058万
展开全部
按照你的意思
我说下基本的思路
可以使用Java的多线程
同时进行计算这样就利用到双核了,两个线程

主线程从数组的0---n/2进行计算
另一个线程从n/2---(n-1)进行计算
定义两个全局变量sum=0
sum1,主线程运行完将计算的总值赋值给sum
,然后将主线程挂起,支线程计算后半部的总和赋值给sum1,用while(sum>0)
这样才知道主线程已经计算完进入睡眠
这时唤醒主线程
让主线程计算sum与sum1的总和。

变量最好定义为无符号的长整型这样可以更好的避免数据溢出。希望对你有所帮助。
btswo
2010-03-17
知道答主
回答量:19
采纳率:0%
帮助的人:7.6万
展开全部
既然要用到2个核那么自然要用到多线程

2个线程的话比1个线程速度要快大概1倍
可以先把那个大的整数数组 拆分成2个或多个运算 最后再合并.
那样比楼上的运算要快一些 但是写的复杂多了!

先写一个线程类专门运算加法

public class AddThread extends Thread {
private int []array;
public AddThread(int [] array){
this.array=array;
}

private int total=0;

public int getNum(){
start();

return total;
}

public void run() {
for(int i=0;i<array.length;i++)
{
total+=array[i];
}
}

}

这里是主类

public class add {
public static void main(String[] args) {
//这是你的数组
int[] array=new int[20000];

int array1[]=new int[array.length/2];
//这里要分成一半 你自己去分
int array2[]=new int[array.length/2];

AddThread aT1=new AddThread(array1);
AddThread aT2=new AddThread(array2);

int total=aT1.getNum()+aT2.getNum();

System.out.println(total);

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c91b73b
2010-03-16 · TA获得超过128个赞
知道答主
回答量:419
采纳率:0%
帮助的人:151万
展开全部
int total=0;
for(i=0;i<array[].length;i++)
{
total=array[i]+x;
}
System.out.print("数组array[]内所有整数和为"+total);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宁静的繁华
2010-03-16
知道答主
回答量:31
采纳率:0%
帮助的人:19.7万
展开全部
不会!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式