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