|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2006
Città: Timbuctu
Messaggi: 2013
|
[JAVA] aspettare che più thread finiscano
Come si fa a aspettare che una serie imprecisata di thread siano terminati.
Per aspettare che un thread th sia finito, faccio un thread (joinThread) e in run gli metto th.join Se i thread sono più di uno e sono stati istanzati così: Thread th[]; for(int i=0; i<100; i++) {th[i] =new Thread(); th[i].start();} Thread joinThread = new Thread(); ??? Il problema è perchè quando istanzo il joinThread non è detto che tutti i Thread th siano stati finiti. Però dovrebbero essere stati istanziati tutti. Quindi avrei pensato di fare qualcosa tipo il run di joinThread --> run(){ for(int q =0; q >=th.length; q++) { try {th[q].join(); } catch...} altraFunzione(); } altraFunzione dovrebbe essere eseguita quando tutti i th sono finiti. Dov' è il problema? altraFunzione mi viene eseguita prima che tutti i thread concludano la loro vita.
__________________
Diverse trattative completate con successo nel mercatino. Verificate miei post più vecchi. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
|
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2006
Città: Timbuctu
Messaggi: 2013
|
Cosa th.length ? Ho sbagliato a copiare nel post, scusa, era q>th.length
__________________
Diverse trattative completate con successo nel mercatino. Verificate miei post più vecchi. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
cmq per il problema principale mi sa che basta una barriera.
http://java.sun.com/j2se/1.5.0/docs/...icBarrier.html
__________________
![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2006
Città: Timbuctu
Messaggi: 2013
|
Interessante la cosa della CyclicBarrier, ma come funziona, non ho capito molto?
Per mad_hhater: Ecco cosa succede a riutilizzare il codice (copia-incolla) ![]()
__________________
Diverse trattative completate con successo nel mercatino. Verificate miei post più vecchi. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
L'esempio che c'è in cima al javadoc mi pare piuttosto auto-esplicativo
![]() cmq il punto importante è la chiamata a barrier.await() che mette il singolo thread in attesa che gli altri finiscano.
__________________
![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: May 2006
Città: Timbuctu
Messaggi: 2013
|
Grazie
__________________
Diverse trattative completate con successo nel mercatino. Verificate miei post più vecchi. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:27.