package matrice;
/**
* Klasa <code>PokretacNiti</code> je zaduzena za pokretanje svih niti koje
* su potrebne u mnozenju matrice,
* @author Amel Dzanic
*/
public class PokretacNiti {
private matrica A,B,rez;
private nitMatrice n[] ;
/**
* Konstruktor koji puni dvije matrice koje ce se mnoziti
* te kreira za to potreban broj niti
* @param A matrica A
* @param B matrica B
* @throws MatricaException ako nisu ulancane
*/
public PokretacNiti(matrica A, matrica B) throws MatricaException{
this.A=A; this.B=B;
if (!A.isUlancana(B)) throw new MatricaException("Matrice nisu ulancane");
rez=new matrica(A.getRedovi(), B.getKolone(), "Rezultirajuca matrica:");
n = new nitMatrice[A.getRedovi()*B.getKolone()];
}
private void pokreniNitiMatrice(){
for(int i=0,h=0; i<A.getRedovi();i++){
for(int j=0;j<B.getKolone();j++){
n[h]=new nitMatrice(A.vratiRed(i), B.vratiKolonu(j),i,j);
h++;
}
}
}
private void smjestiRezultate(){
for (int i=0,h=0;i<A.getRedovi();i++){
for(int j=0;j<B.getKolone();j++){
try{
if(n[h].isAlive())n[h].join();//ako nit nije zavrsila nek zavrsi
rez.addElement(n[h].getRez(), n[h].getI(), n[h].getJ());
h++;
} catch (InterruptedException ie){}
}
}
}
public void obavi() {
pokreniNitiMatrice();
smjestiRezultate();
}
public matrica getRez() {
return rez;
}
}
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.