Java - Esperar sin hacer "espera activa"

 
Vista:

Esperar sin hacer "espera activa"

Publicado por Toliña (20 intervenciones) el 21/09/2006 09:56:01
Hola! A ver si alguien me puede echar una mano. Estoy haciendo un programa que tiene que lanzar a otro, y éste le avisa de cuando termina. Hasta ahi bien. Pero el q estoy haciendo yo no debe hacer espera activa, como es logico. Una posible solucion seria emplear hilos, pero alguien sabe si se puede hacer de otra manera? Xq con hilos me es mu conplicado. Seria algo asi.

Programa.start(); //Aqui lanzo el programa

//Y aqui tendria q esperar a que el programa le indique q termino

Programa.stop();

Gracias
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:Esperar sin hacer

Publicado por chuidiang (950 intervenciones) el 21/09/2006 14:21:27
Hola:

No sé si entendemos lo mismo por espera activa.

Si lanzas un programa, obtienes un Process. Esperando por el Process con waitFor(), la espera no es activa

Eso sí, el código no continua, se queda parado hasta que termina. La espera no es activa porque el código no está continuamente en un bucle comprobando que el programa termine, sino que waitFor() se encarga de "dormirlo".

Si lo que pretendes es que el código siga, entonces si debes lanzar un hilo. Eso es fácil

Thread hilo = new Thread()
{
public void run()
{
Process p = Runtime.getRuntime().exec("programa);
p.waitFor();

}
}
hilo.start();

En hilo.start() se arranca el hilo. El hilo se ejecuta, lanza el programa y se queda dormido hasta que acabe.
hilo.start() no se queda dormido. Lanza el hilo y sigue ejecutando con lo que haya detrás.

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