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