Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] help thread

    Salve ragazzi.

    Io ho più thread che eseguono questa parte del programma (metodo run):


    codice:
    OccupaSedia disponibile = new OccupaSedia(nPart,kSedie,nSess);
    				System.out.println("Numero sedie disponibili:"+disponibile.getSedie());
    				
    					sleep(1000);
    									if (sedia.getStato("sedia"+i)==false){
    					
    							sedia.occupa(name,sediam);
    							
    							disponibile.decrementaSedie();
    Arrivato qui mi lancia l'eccezione (Lanciata eccezione metodo decrementa) e non mi decremente.
    Questo è il metodo decrementaSedia della classe OccupaSedia:
    codice:
    public void decrementaSedie(){
    		try{
    			notifyAll();
    			wait();
    		
    			numSedieDisponibili--;
    		notifyAll();
    		
    		}
    		catch(Exception x){System.out.println("Lanciata eccezione metodo decrementa");}
    	}
    Sapete dirmi perchè? e come si risolve?

    Grazie a tutti.

  2. #2
    Che tipo di eccezione ti da ?(ci sono milioni di tipi di eccezioni)...

  3. #3
    Mi dice: "Lanciata eccezione metodo decrementa"

    cioè mi cattura l'eccezione in quel metodo.

    Domani vi dico l'eccezione precisa.

    Hai qualche idea?

    Grazie per la risposta.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    conviene sempre stampare lo StackTrace ed un eventuale messaggio personalizzato... solo il messaggio personalizzato con metodi che potenzialmente possono lanciare diverse eccezioni serve a poco o niente.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5

    [JAVA] Ogni thread parte da 0

    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.