java 多线程 求和

我编写的一段代码,基本上已经实现多线程求和可是没办法返回每个线程求和之后得出的值我的目的毕竟是求总的和,不是每个线程的和importjava.io.*;classtest... 我编写的一段代码,基本上已经实现多线程求和
可是没办法返回每个线程求和之后得出的值
我的目的毕竟是求总的和,不是每个线程的和

import java.io.*;

class testthread extends Thread
{ int b[]=null;
public testthread(int[] a){b=a;}
public void run()
{int sum=0;
for (int i = 0; i<b.length; i++)
{
sum=sum+b[i];
}
System.out.println(sum);
}

}

public class thread {

/**
* @param args
*/
public static void main(String args[]) {
// TODO 自动生成方法存根
try{
System.out.print("输入线程数 p(p>=2):");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String A=(String)br.readLine();
int p=Integer.parseInt(A);
System.out.print("输入求和数 n:");
BufferedReader cr=new BufferedReader(new InputStreamReader(System.in));
String B=(String)cr.readLine();
String x[] = B.split(" ") ;
int[] n = new int[x.length] ;
for (int i = 0; i<x.length; i++)
{
n[i] = new Integer(x[i]).intValue() ;
}
int c=n.length/p;
int a[][]=new int[p][c]; //定义一个多维数组
int b=0;
for(int i=0;i<p;i++) //将n[]中元素赋值给多维数组
for(int j=0;j<c;j++)
{a[i][j]=n[b];b++;}
for(int i=0;i<p;i++) //测试多维数组输出
{for(int j=0;j<c;j++)
{System.out.print(a[i][j]+" "); }
System.out.println();
}
for(int i=0;i<p;i++) //创建线程
new testthread(a[i]).start();

}catch(IOException e){}

}

}
展开
 我来答
又一次初恋
2006-11-26 · TA获得超过663个赞
知道小有建树答主
回答量:483
采纳率:0%
帮助的人:378万
展开全部
帮你帮到底,你凑合着看看吧

package test;

import java.io.*;

class testthread
extends Thread {
int b[] = null;
public testthread(int[] a) {
b = a;
}

public void run() {
int sum = 0;
for (int i = 0; i < b.length; i++) {
sum = sum + b[i];
}
System.out.println(sum);
thread.tnumInc(sum);
}
}

public class thread {
private static int ready = 0;
private static int tnum = 0;
private static int SUM = 0;
static synchronized void tnumInc(int p)
{
ready++;
SUM += p;
if(ready>=tnum){
System.out.println(SUM);
}
}
/**
* @param args
*/
public static void main(String args[]) {
// TODO 自动生成方法存根
try {
System.out.print("输入线程数 p(p>=2):");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String A = (String) br.readLine();
int p = Integer.parseInt(A);
tnum = p;
System.out.print("输入求和数 n:");
BufferedReader cr = new BufferedReader(new InputStreamReader(System.in));
String B = (String) cr.readLine();
String x[] = B.split(" ");
int[] n = new int[x.length];
for (int i = 0; i < x.length; i++) {
n[i] = new Integer(x[i]).intValue();
}
int c = n.length / p;
int a[][] = new int[p][c]; //定义一个多维数组
int b = 0;
for (int i = 0; i < p; i++) //将n[]中元素赋值给多维数组
for (int j = 0; j < c; j++) {
a[i][j] = n[b];
b++;
}
for (int i = 0; i < p; i++) { //测试多维数组输出
for (int j = 0; j < c; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
for (int i = 0; i < p; i++) //创建线程
new testthread(a[i]).start();

}
catch (IOException e) {}

}

}

随便写写,没有测试过。你自己调调看吧。

大概思路就是给一个方法合并结果,并对已经完成的thread进行计数

当完成的thread的数量==总数的时候,最后结果就出来了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式