AlexNapoli ha scritto:
da poco ho cominciato a studiare i Thread, ho provato a passare a un thread un parametro intero e una LinkedList, il thread dovrebbe aggiungere elementi alla lista e restituire la lista. Ma nel main non la stampa correttamente.Questo è il codice, gentilmente potreste dirmi dov'è l'errroe?
Innanzitutto, generalmente è preferibile implementare Runnable invece che estendere Thread, per definire un "lavoro" in un thread. Ma non è quello il problema.
Il vero problema è che nel main fai lo start del thread ma devi tenere presente che start NON fa eseguire subito il run del thread. Lo start mette solo il thread in stato "runnable", cioè
può essere eseguito ma dipende dallo scheduler del thread.
Per dirlo in altro modo, a seconda delle tempistiche più o meno (s)fortunate, il for finale nel main potrebbe anche essere eseguito e terminare PRIMA che il run() del tuo thread venga eseguito!
In sostanza, la cosa più semplice che puoi fare nel main è mettere un t1.join() tra lo start e il tuo for finale. Il join() attende che il thread finisca. Quindi dopo il join puoi certamente osservare le modifiche fatte dal thread a quella lista.