السلام عليكم
لدي مشكلة في عملية ضرب مصفوفتين باستخدام Thread
لكن المشكل فالكود ان thread واحد يحسب جميع الاسطر
مثال اذا كانت المصفوفة 3*3 وعدد threads 3 فكل thread يحسب سطر
package thread; import java.lang.*;import java.io.*;import java.util.*; class MatriceOpx extends Thread { static int matrice1[][]; static int vecter[][];//poure jeri les thread static int matrice2[][]; static int resultat[][]; static int n; static int m; //static int id=2; static int th; MatriceOpx(int i) { th=i; this.start(); } public void run(){ int i,j,rang;for(rang=0;rang<n;rang++){ if(vecter[rang][0]==0){for(i=0;i<n;i++) { resultat[rang]=0; for(j=0;j<n;j++) resultat[rang]=resultat[rang]+matrice1[rang][j]*matrice2[j]; } vecter[rang][0]=1; vecter[rang][1]=th; } }}public static void main(String args[]) { int i,j,k; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("<-- Multiplication de 2 matrices carres des entiers naturels --> "); Scanner e1= new Scanner(System.in); n = e1.nextInt();System.out.println("Veuillez introduiez le nombre de lignes et de colonnes des matrices : ");System.out.println("Veuillez introduiez le nombre de thread:");try{ m = e1.nextInt();}catch(Exception e){} if (m > n) {System.out.print("Non, m <= n");System.out.print("Veuillez introduiez le nombre de thread:"); try { m = e1.nextInt(); }catch(Exception e){} } matrice1=new int[n][n]; matrice2=new int[n][n]; resultat=new int[n][n]; vecter=new int[n][2]; //inisialisation for(i=0;i<n;i++){ vecter[0]=0; } System.out.println("Veuillez remplir les cases de la matrice une : "); for(i=0;i<n;i++) { for(j=0;j<n;j++) { try { matrice1[j]=150; }catch(Exception e){} } } System.out.println("Veuillez remplir les cases de la matrice deux : "); for(i=0;i<n;i++) { for(j=0;j<n;j++) { try { matrice2[j]=50; }catch(Exception e){} } } MatriceOpx mat[]=new MatriceOpx[m];for(i=0;i<m;i++){ mat=new MatriceOpx(i); } try { for(i=0;i<m;i++) mat.join(); }catch(Exception e){} System.out.println("Ci dessous le resultat :"); for(i=0;i<n;i++){ k=i+1; System.out.println("le ligne numéro:" + k + " dans la matrice resultat fait le calcule à l'aide de thread N° : " +vecter[1] + ""); for(j=0;j<n;j++) System.out.println(resultat[j]); } } }