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.
la cosa che non capisco è che una volta finita la corsa lo stack contiene sempre meno id delle macchine in gioco.codice:// campi ... static Stack arrivo=new Stack(); // metodo run() ... synchronized(arrivo){ arrivo.push(Integer.toString(id)); }
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