Java es un lenguaje de programación diseñado para ser concurrente y distribuido. Sin embargo, muchas veces una aplicación con procesos secuenciales (de una sola tarea) no ofrecen el mejor rendimiento. Para eso existen los llamados procesos o programas multitarea.
El paquete java.lang incluye dos elementos para la creación de aplicaciones multitarea en Java: la clase Thread y la interfaz Runnable. Mediante éstas, disponemos de dos caminos alternativos a la hora de implementar una aplicación multitarea:
- Heredar la clase Thread
- Implementar la interfaz Runnable
Ejemplo. Creamos una clase que extiende de la clase Thread.
MyHilo.java
package cityjava; import static java.lang.System.out; public class MyHilo extends Thread{ private String nombre; public MyHilo(){} public MyHilo(String nombre){ this.nombre = nombre; } public void setNombre(String nombre){ this.nombre=nombre; } public String getNombre(){ return nombre; } public static void main(String[] args){ Thread hilo1 = new MyHilo("EJEMPLO 1"); Thread hilo2 = new MyHilo("EJEMPLO 2"); hilo2.start(); hilo1.start(); } public void run(){ final int MAX = 100; for(int i=0; i < MAX; i++){ out.println("Hola,"+this.nombre); out.flush(); } } }
Ejemplo. Creamos una clase que implemente de la interface Runnable.
MyTarea.java
package cityjava; import static java.lang.System.out; public class MyTarea implements Runnable{ public void run(){ for(int i=0; i < 10; i++){ out.println("Nombre: "+Thread.currentThread().getName()); try{ Thread.sleep(100); }catch(InterruptedException e){ out.println("Excepcion: "+e.getMessage()); } } } public static void main(String[] args){ MyTarea myTarea = new MyTarea(); Thread t1 = new Thread(myTarea,"A"); Thread t2 = new Thread(myTarea,"B"); t2.start(); t1.start(); } }
Ejemplos de programas que usan hilos:
- Sistemas de envío de correos
- Interfaces gráficas (tipo word, etc.)
- Sistemas de telecomunicaciones
- Etc.
Referencias
Martín Sierra, Antonio J., Programador Certificado Java 2. Curso Práctico 3era edición, pp 396, Ed. Alfaomega Ra-Ma.
Enlaces:
https://victomanolo.wordpress.com/la-clase-thread/
https://victomanolo.wordpress.com/implements-runnable-implementos-ejecutable/
Comentarios
Publicar un comentario