Originariamente inviato da ragnonerodocet
ma sinceramente join mi è ancora oscuro...
Se io faccio:
codice:
Thread t = ......
t.start(); // avvio il nuovo thread
..... altre istruzioni ...
Il nuovo thread (quello avviato con start() "gira" in "parallelo" al thread corrente cioè mentre le "altre istruzioni" vengono eseguite nel thread corrente, il run() del nuovo thread ha modo di proseguire la sua esecuzione.
Se però nel thread corrente faccio:
t.join()
Il thread corrente si blocca, proprio lì dentro nella join() in attesa che quell'altro thread avviato arrivi a terminazione.
codice:
t.start() t.join()
| |
thread corrente ============================ ....wait.... ======= = =
thread 't' I===============================F
-------------------------------------------------------> tempo
I = inizio del run()
F = fine del run()
Quando il thread corrente fa lo start dell'altro thread, quest'ultimo parte e va per conto suo e il thread corrente pure continua per conto suo con le istruzioni che seguono dopo lo start().
Quando il thread corrente fa il join sull'altro thread, si blocca (viene proprio sospeso) e attende la terminazione dell'altro thread e poi riprende la sua esecuzione appena l'altro thread è terminato.
Più chiaro ora?