Java - Como funcionan los Threads???

 
Vista:

Como funcionan los Threads???

Publicado por Clayder (70 intervenciones) el 15/01/2007 00:07:29
Hola:

Quisiera saber exactamente como funcionan los Threads, aqui tengo una porcion de codigo que no la entiendo muy bien:

public class EjemploThread extends Thread {
public EjemploThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 50 ; i++)
System.out.println(i + " " + getName());
System.out.println("Termina " + getName());
}
public static void main (String [] args) {
new EjemploThread("Thread 1").start();
new EjemploThread("Thread 2").start();
}
}

En el ejemplo que se muestra se ejecutan dos threads. Lo que quiero saber saber es como funcionan estos; es decir, ¿el thread2 espera a que el thread1 termine para que empieze su ejecucion?, al ver el resultado veo que no es asi; entonces ¿como funcionan?, y ¿como haria para poder hacer que el thread2 no empieze hasta que el thread1 haya terminado?

Les agradesco su respuesta.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Como funcionan los Threads???

Publicado por chuidiang (950 intervenciones) el 15/01/2007 09:29:19
Hola:

No esperan el uno por el otro, simplemente empiezan los dos a ejecutarse a la vez. Cuando llamas a start(), comienza el thread, pero la llamada a start() sale inmediatamente y continua con la ejecución de la siguiente linea, aunque el thread no haya termiando. De hecho, en el metodo run() suele ser habitual meter un while(true) {...}.

La salida de ambos threads debería salirte entremezclada. Es posible que si el trhead 1 es muy rápido, termine antes de que al 2 le de tiempo a arrancar.

Para que un Thread espere por otro, tiene que llamar al método join() de dicho Thread

EjemploThread hilo1 = new EjemploThread("Thread1");
hilo1.start();
hilo1.join(); // Espera que termine
new EjemploThread("Thread 2").start();

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar