Los
métodos start() y run()
Como habíamos mencionado antes, para poner en marcha este nuevo Thread se
debe llamar al método start(), heredado de
la súper-clase Thread, que se encarga de llamar a run(). Es importante
no confundir el método start() con el método run(). El método run() contiene el
código a ser ejecutado “asincrónicamente” en otro thread, mientras que el
método start() es el que crea al Thread y en algún punto hace que ese Thread
ejecute lo que esta en run(). Este método devuelve el control inmediatamente.
Pero si mezclamos todo y ejecutamos directamente el run(), el código se
ejecutara en el Thread actual.
El método start() devuelve el control inmediatamente… mientras tanto, el
nuevo Thread inicia su recorrido por el método run(). ¿Hasta cuando? Hasta que
termina ese método, cuando sale, termina el Thread.
El
método join()
Si un Thread necesita esperar a que otro termine (por ejemplo el Thread
padre espera a que termine el hijo) puede usar el método join(). ¿Por que se
llama así? Crear un proceso es como una bifurcación, se abren 2 caminos, que
uno espere a otro es lo contrario, una unificación.