Grazie andbin per avermi risposto e chiarito il dubbio.
Sono stato due giorni su questo esercizio, usando di tutto e di più, LinkedList ArrayBlockinkQueue PriorityQueue ecc.. (quindi strutture dati già sincronizzate e non) ma si verificavano sempre questi "misteriori" output e alla fine ho ipotizzato che si potesse trattare di problemi di tempificazione della console ecc...
Quindi ora ho capito che anche se gli accessi alla struttura dati condivisa sono sincronizzati e gestiti in mutua esclusione, una volta terminate queste operazioni, non è garantito che l'output venga gestito in modo sincrono; ma a questo punto vorrei farti una domanda: è possibile rendere sincronizzati anche le stampe degli output e non solo gli accessi alla struttura dati?
Grazie 1000