Java a fondo

Page 219

204

6 Multithreading (Hilos)

Para que el mensaje de finalización del programa efectivamente salga cuando los tres hilos hayan finalizado su método run debemos esperar a que cada uno de ellos finalice. Para esto, utilizamos el método join como veremos a continuación: ▼

// ...

public static void { Thread t1 = new Thread t2 = new Thread t3 = new

main(String[] args) throws Exception Thread(new DemoThread("Pedro")); Thread(new DemoThread("Pablo")); Thread(new DemoThread("Juan"));

t1.start(); t2.start(); t3.start(); // esperamos por la finalizacion de los tres hilos

t1.join(); t2.join(); t3.join();

}

}

System.out.println("Final del programa !"); ■

El programa principal detendrá su ejecución hasta tanto no hayan finalizado los hilos t1, t2 y t3.

6.2.3 Threads e interfaz gráfica Cuando en una GUI alguno de los componentes da origen a un proceso que puede llegar a demorar, tenemos que identificarlo y lanzarlo en su propio hilo de ejecución ya que de lo contrario toda la interfaz gráfica quedará bloqueada e inutilizada mientras que el proceso iniciado no finalice, lo que puede dar al usuario una idea del mal funcionamiento general. En el siguiente programa, creamos una interfaz gráfica que tiene un botón y un choice (una de lista de donde se puede seleccionar un ítem). Cuando se presiona el botón “dormimos” 10 segundos simulando que se invocó a un proceso que demora ese tiempo (podría ser una consulta a una base de datos por ejemplo). El lector podrá verificar (si ejecuta este programa) que una vez que se presiona el botón, durante los siguientes 10 segundos, la GUI queda inutilizada y la sensación será de que algo no está funcionando bien. ▼

// ...

public class VentanaDemora extends Frame { private Button boton; private Choice combo; public VentanaDemora() { setLayout(new FlowLayout()); add( boton = new Button("Esto va a demorar...") ); boton.addActionListener(new EscuchaBoton());

Java a fondo - Ing. Pablo A. Sznajdleder

Java a fondo / pag. 204


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.