pc00 ha scritto:
Ora se io al posto di farlo terminare alla fine del run volessi che questo thread si mettesse in coda a quelli che ancora devono eseguire le istruzioni come posso fare? Tipo lancio 8 thread ,4 eseguono le istruzioni ma devono rimettersi in coda a quelli che ancora devono eseguirle per rieseguirle di nuovo.
Scusa il gioco di parole
Uhm .. credo ora di aver capito. Mettiamola così: se vuoi rieseguire qualcosa chiaramente di per sé basterebbe un banale "loop" ma non sarebbe sufficiente per quello che chiedi e credo di aver capito.
Se hai 4 thread A B C e D, tu vuoi che un certo codice
x venga eseguito da B solo
dopo che il codice
x è stato eseguito da A. E che C lo esegua solo
dopo che l'ha eseguito B ecc...
Corretto?
Per questo non basta un semplice
synchronized. Serve un coordinamento tra i thread in modo che ciascuno stia in wait (attesa) finché non è il suo turno. In altre parole serve una sorta di "semaforo".
Di recente (circa 2 mesi fa) c'è stata una discussione qui relativa ai thread e alla coordinazione tra thread:
La discussione è un po' lunga, prova a leggerla sperando che non ti annoi.
In particolare cerca di arrivare al mio post del 31 agosto 2015, 21:57 dove ho fatto l'esempio con wait/notify.
Se hai altri dubbi, prosegui pure in questa discussione (non quella linkata, perché già un po' lunghetta ...).