ho un problema si sincronizzazione alle volte e non riesco a capire come posso risolvere provo a postare le parti di codice interessate
questa sta nel run() del mio giocatore..i giocatori sono 3 da [0-2]
synchronized(this){
this.S=1;
Turnox[f].S=0;
if(verifica==true){/*se ha finito le carte stampa risveglia il giocatore successivo e si interrompe*/
Thread.currentThread().interrupt();
if(Thread.currentThread().isInterrupted())
{
System.out.println("Ho perso e sono uscito dal gioco sono il numero "+(v_giocatore));
for(int m=0;m<n;m++){
Turnox[m].numero_giocatori=(Turnox[m].numero_giocatori)-1;
}
Turnox[f].sem.signal(Turnox[f],S);/*risveglia il giocatore*/
return;
}
}
else{
Turnox[f].sem.signal(Turnox[f],S); /*risveglia il giocatore*/
}
while(this.S==1){
try {
wait();
}
catch (InterruptedException e) {}
}
}
}
}
questa è la classe Semaphore
public class Semaphore {
Giocatore g;
int S;
public Semaphore(int S){
this.S=S;
}
public void signal(Giocatore gio,int S) {
this.g=gio;
this.S=S;
S--;
if (S==0) {
synchronized(g){
g.notify();/*risveglia il giocatore*/
}
}
}
}
please help me!!!

Rispondi quotando