Scusatemi ragazzi.
Adesso ho un poco cambiato il programma ma non ottengo quello che voglio.
Questo è il mio codice del run:
codice:
public void run(){
synchronized(o){
try{
o.wait();
System.out.println("Gioco. Io sono:"+name);
sleep(1000);
System.out.println("ciao!");
for (int i=0; i<kSedie; i++){
String sed="sedia"+i;
Sedia sedia = new Sedia(sed);
sleep(1000);
System.out.println("Nome sedia:"+sedia.getNomeSedia());
System.out.println("Numero sedie disponibili:"+disponibile.getSedie());
sleep(1000);
System.out.println("Occupato:"+sedia.getStato("sedia"+i));
sleep(1000);
if (sedia.getStato("sedia"+i)==false){
sedia.occupa(name,sed);
System.out.println("ci sono");
disponibile.decrementaSedie();}
System.out.println("sedia"+i+" "+""+sedia.getPersona());
System.out.println("Ho occupato la sedia:"+sedia.getStato("sedia"+i));
System.out.println("Numero sedie disponibili:"+disponibile.getSedie());
}
}
catch(InterruptedException e) { return; }
}
Questo è il main
codice:
Object ob = new Object();
for (int j=0; j<nSess; j++){
for (int i=0; i<nPart; i++){
new RunGioca("Giocatore"+i,ob).start();
}
synchronized (ob){ ob.notifyAll();}
Facendo così mi da questo risultato:
codice:
Gioco. Io sono:Giocatore0
ciao!
Nome sedia:sedia0
Numero sedie disponibili:1
Occupato:false
ci sono
sedia0 Giocatore0
Ho occupato la sedia:sedia0
Numero sedie disponibili:0
Gioco. Io sono:Giocatore1
ciao!
Nome sedia:sedia0
Numero sedie disponibili:1
Occupato:false
ci sono
sedia0 Giocatore1
Ho occupato la sedia:sedia0
Numero sedie disponibili:0
Mentre io voglio che solo un giocatore può occupare la sedia0. Come devo fare? Perchè il numero di sedie disponibili ritorna ad 1 quando parte il secondo giocatore?
Grazie a tutti. Ciao Ciao