java 多线程 求和
答案:1 悬赏:10
解决时间 2021-02-11 21:40
- 提问者网友:对着我说爱我
- 2021-02-11 06:18
java 多线程 求和
最佳答案
- 二级知识专家网友:绝望伪装
- 2021-02-11 07:12
帮你帮到底,你凑合着看看吧
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);
}
}
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的数量==总数的时候,最后结果就出来了
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);
}
}
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的数量==总数的时候,最后结果就出来了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯