Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    sincronizzare elementi di un array

    ciao a tutti.....
    volevo sapere se è possibile sincronizzarsi anche sugli elemnti di un array (sempre oggetti naturalmente)...
    io ho scritto questa parte di codice ma mi da errore "NullPointer Exception" e non riesco a capire some mai...
    (l'errore lo da sulla riga in grassetto)

    codice:
                Object[] pos=new Object[20];
    		for(i=0;i<pos.length;i++){
    			try{
    				synchronized(pos[i]){
    					pos[i].wait();
    					System.out.println("ok passa");
    					pos[i-1].notify();
    				}				
    			}catch(InterruptedException e){
    				e.printStackTrace();
    			}
    		}
    qualcuno sa darmi una dritta?
    grazie mille
    citrus

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Da null pointer exception perche' gli elementi dell'array sono oggetti non inizializzati ovvero nulli.

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    si si ho visto..
    che idiota!!!
    scusate il disturbo

    citru(llu)s
    :quipy:

  4. #4
    nessun disturbo

    però... la prossima volta ricordati di specificare
    il linguaggio nel titolo delle discussioni.

    questa volta lo aggiungo io.
    ...Terrible warlords, good warlords, and an english song

  5. #5
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    Originariamente inviato da Johnny_Depp
    nessun disturbo

    però... la prossima volta ricordati di specificare
    il linguaggio nel titolo delle discussioni.

    questa volta lo aggiungo io.
    hai ragione l'ho scordato.. scusami :bubu:

  6. #6
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    continuo in questo tread per un altro problema ma il concetto riguarda sempre la sincronizzazione:

    ho creato un programma che simula la corsa di alcune macchine.
    alla fine ho bisogno di inserire in uno stack l'ordine di arrivo delle auto.
    quidi ho creato un campo statico di tipo stack nel quale ciascuno dei thread auto andrà a mettere il suo id quando taglia il traguardo.
    ovviamente per fare in modo che le operazioni di aggiunta id allo stack siano atomiche ho definito un blocco di codice synchronized entro il quale faccio il push.

    codice:
    // campi
    ...
    static Stack arrivo=new Stack();
    
    
    // metodo run()
    ...
    synchronized(arrivo){
    	arrivo.push(Integer.toString(id));
    }
    la cosa che non capisco è che una volta finita la corsa lo stack contiene sempre meno id delle macchine in gioco.
    questo può voler dire che due o più thread sono riusciti a scrivere contemporaneamente nello stack nonostante la sincronizzazione e a mandare a pallino il tutto?

    dov'è che sbaglio?
    grazie mille
    citrus

  7. #7
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    come non detto..
    ho fatto altrimenti...
    però mi rimane il dubbio:
    perchè lo stack mi ha dato questo problema mentre una variabile String (a cui concateno di volta in volta l'id del nuovo arrivato) invece funziona?
    a questo punto so che non era un problema di sincronizzazione almeno..
    cmq...
    grazie ugualmente
    ciauz

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 © 2025 vBulletin Solutions, Inc. All rights reserved.