dursino
07-02-2010, 21:32
Salve ragazzi, guardate questo codice,
class MioThread extends Thread
{
private int mio;
private int succ;
private MioThread [] vect;
boolean attivo;
MioThread(int num,int succ)
{
mio=num;
if (mio==0) attivo =true;
this.succ=succ;
}
public void setArray(MioThread [] ar)
{
vect=ar;
}
public synchronized void vai()
{
attivo=true; notify();
}
public synchronized void run()
{ try{
while(this.attivo==false) wait();
System.out.println("MioThread" + mio);
if (succ!=-1){ vect[succ].vai();}#vett[succ].attivo=true; notifyAll();
} catch(InterruptedException e){}
}
} Perchè è fondamentale aggiungere la funzione void vai() al fine del giusto funzionamento,se infatti direttamente dal run provo a inserire il codice dopo l'# il programma si blocca..
Per maggiori info questo è il testo completo:
Il file contiene una classe MioThread che estende Thread. Ogni MioThread possiede un numero
proprio num e memorizza il numero proprio di un altro MioThread. Inoltre, ogni MioThread possiede
un array di riferimenti ad altri MioThread. L'elemento i-esimo dell'array contiene un riferimento al
MioThread di numero proprio i. La classe prevede il costruttore MioThread(int num, int succ) e un
metodo setArray(MioThread[] ar). Un MioThread può trovarsi nello stato attivo o disattivo. Il
MioThread che ha num pari a 0 parte nello stato attivo, mentre tutti gli altri partono nello stato
disattivo. Nello stato disattivo, i MioThread si sospendono in attesa si diventare attivi. Un MioThread
attivo stampa la stringa “MioThread num”, attiva il MioThread numero succ (a meno che succ non
valga -1), quindi termina.
Il file contiene, inoltre, la classe Esa, con un metodo fai(int[] arsucc), che crea un MioThread per ogni
elemento dell'array arsucc, con num un numero progressivo a partire da 0 e succ pari al valore
corrispondente nell'array arsucc. Successivamente, il metodo chiama opportunamente setArray su ogni
MioThread creato e, infine, li avvia tutti
class MioThread extends Thread
{
private int mio;
private int succ;
private MioThread [] vect;
boolean attivo;
MioThread(int num,int succ)
{
mio=num;
if (mio==0) attivo =true;
this.succ=succ;
}
public void setArray(MioThread [] ar)
{
vect=ar;
}
public synchronized void vai()
{
attivo=true; notify();
}
public synchronized void run()
{ try{
while(this.attivo==false) wait();
System.out.println("MioThread" + mio);
if (succ!=-1){ vect[succ].vai();}#vett[succ].attivo=true; notifyAll();
} catch(InterruptedException e){}
}
} Perchè è fondamentale aggiungere la funzione void vai() al fine del giusto funzionamento,se infatti direttamente dal run provo a inserire il codice dopo l'# il programma si blocca..
Per maggiori info questo è il testo completo:
Il file contiene una classe MioThread che estende Thread. Ogni MioThread possiede un numero
proprio num e memorizza il numero proprio di un altro MioThread. Inoltre, ogni MioThread possiede
un array di riferimenti ad altri MioThread. L'elemento i-esimo dell'array contiene un riferimento al
MioThread di numero proprio i. La classe prevede il costruttore MioThread(int num, int succ) e un
metodo setArray(MioThread[] ar). Un MioThread può trovarsi nello stato attivo o disattivo. Il
MioThread che ha num pari a 0 parte nello stato attivo, mentre tutti gli altri partono nello stato
disattivo. Nello stato disattivo, i MioThread si sospendono in attesa si diventare attivi. Un MioThread
attivo stampa la stringa “MioThread num”, attiva il MioThread numero succ (a meno che succ non
valga -1), quindi termina.
Il file contiene, inoltre, la classe Esa, con un metodo fai(int[] arsucc), che crea un MioThread per ogni
elemento dell'array arsucc, con num un numero progressivo a partire da 0 e succ pari al valore
corrispondente nell'array arsucc. Successivamente, il metodo chiama opportunamente setArray su ogni
MioThread creato e, infine, li avvia tutti