java多线程矩阵乘法


public class MyMatrix implements Runnable {
static int[][]a={{1,3},{5,2},{3,1}},b={{5,3,1},{6,2,2}};//创建的俩个矩阵,矩阵中的元素可任意
static int[][]c=new int[a.length][b[0].length];//接收上面两个矩阵的积的矩阵
int index;//矩阵的行下标
static Thread t[]=new Thread[a.length];//创建线程数组
MyMatrix(int index){
this.index=index;//当前线程矩阵的行下标
}
MyMatrix(){

}

public void run(){
try{
if(a[0].length==b.length){//a矩阵的列数等于b矩阵的行数才能进行矩阵的乘法
this.matrix(index,a,b);
}else{
System.out.println("当前两个矩阵不能进行乘法运算");
}
}catch(Exception e){

}
}

public void matrix(int index,int[][]a,int[][]b){//取得传入的行下标所在行的矩阵的积
try{
for(int i=0;ifor(int j=0;jc[index][i]+=a[index][j]*b[j][i];
}
// 此语句是为了打印每个线程的执行过程,想看的可以把注释符去掉
// System.out.println(Thread.currentThread().getName()+"c["+index+"]["+i+"]:"+c[index][i]);
}
}catch(Exception e){

}

}

public void print(int[][]a){//打印传入的矩阵
System.out.println("***矩阵**");
for(int i=0;ifor(int j=0;jSystem.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println();
}

public static void main(String[]dg){
MyMatrix d=new MyMatrix();//创建当前类的对象,方便调用方法
// 输出三个矩阵有多少行和多少列
System.out.println("a是"+a.length+"行"+a[0].length +"列");
System.out.println("b是"+b.length+"行"+b[0].length +"列");
System.out.println("c是"+c.length+"行"+c[0].length +"列");

for(int i=0;it[i]=new Thread(new MyMatrix(i));//创建线程
t[i].setName("线程"+i);//设置线程的名字
t[i].start();//当前线程开始执行
}
d.print(a);//打印矩阵a
d.print(b);//打印矩阵b
d.print(c);//打印矩阵c


}
}


public class MyMatrix implements Runnable {
static int[][]a={{1,3},{5,2},{3,1}},b={{5,3,1},{6,2,2}};//创建的俩个矩阵,矩阵中的元素可任意
static int[][]c=new int[a.length][b[0].length];//接收上面两个矩阵的积的矩阵
int index;//矩阵的行下标
static Thread t[]=new Thread[a.length];//创建线程数组
MyMatrix(int index){
this.index=index;//当前线程矩阵的行下标
}
MyMatrix(){

}

public void run(){
try{
if(a[0].length==b.length){//a矩阵的列数等于b矩阵的行数才能进行矩阵的乘法
this.matrix(index,a,b);
}else{
System.out.println("当前两个矩阵不能进行乘法运算");
}
}catch(Exception e){

}
}

public void matrix(int index,int[][]a,int[][]b){//取得传入的行下标所在行的矩阵的积
try{
for(int i=0;ifor(

int j=0;jc[index][i]+=a[index][j]*b[j][i];
}
// 此语句是为了打印每个线程的执行过程,想看的可以把注释符去掉
// System.out.println(Thread.currentThread().getName()+"c["+index+"]["+i+"]:"+c[index][i]);
}
}catch(Exception e){

}

}

public void print(int[][]a){//打印传入的矩阵
System.out.println("***矩阵**");
for(int i=0;ifor(int j=0;jSystem.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println();
}

public static void main(String[]dg){
MyMatrix d=new MyMatrix();//创建当前类的对象,方便调用方法
// 输出三个矩阵有多少行和多少列
System.out.println("a是"+a.length+"行"+a[0].length +"列");
System.out.println("b是"+b.length+"行"+b[0].length +"列");
System.out.println("c是"+c.length+"行"+c[0].length +"列");

for(int i=0;it[i]=new Thread(new MyMatrix(i));//创建线程
t[i].setName("线程"+i);//设置线程的名字
t[i].start();//当前线程开始执行
}
d.print(a);//打印矩阵a
d.print(b);//打印矩阵b
d.print(c);//打印矩阵c


}
}


相关文档
最新文档