Los Thread (hilos) en Java, se les suele llamar también procesos ligeros (lightweight processes). Éstos consumen menos recursos que la creación y ejecución de un proceso normal. La creación de un proceso duplica exactamente los mismos recursos que el proceso padre (el que le creó), esto implica el estado del proceso, el contador de programa, información de planificación, etc. Cuando se crea un thread en Java, lo único que necesita es el contador de programa la pila de ejecución, puesto que los demás recursos los comparte con el padre.
Creación de Thread en Java
Hay dos formas de crear los Thread.
- Heredando (extends) de la clase Thread. Esta clase se encuentra en el paquete java.lang. Este paquete se importa por defecto en todo programa Java.
- Implementando la interfaz Runnable. Esta interfaz se encuentra en el paquete java.lang.
Heredando de Thread
Es muy sencillo. Se hereda y se implementa el método run(). Cuando queramos poner en marcha el thread, se invoca al método start, no al run. El método start es que el planifica y asigna recursos al thread. Un ejemplo: en el método run, se hace un bucle grande e imprime cada 500 Iteraciones y el thread que lo está ejecutando. Variando esta cantidad, se ve como se alternan los thread.
________________________________________________________
/* * Método 1: Heredando de la clase Thread * La clase Thread pertenece al paquete * java.lang que se importa por defecto. */ public class TestThread extends Thread { public static void main (String []args) { TestThread h1 = new TestThread(); TestThread h2 = new TestThread(); //Creamos 2 thread
h1.start(); h2.start(); } //Si se hereda de la clase Thread, se debe //implementar el método run() public void run() { for (int i = 0; i < 500000; i++) if ((i % 500) == 0) System.out.println(getName()+ " : " + i); } } ________________________________________________________
Implementando la interfaz Runnable
Java no permite herencia múltiple. Por eso disponemos de la interfaz Runnable y así "permitir" herencia múltiple. Lo que tenemos que hacer es implementar, al igual que antes, el método run(). Además, para crear el Thread, ahora tenemos que crearnos un dato nuevo de tipo Thread y pasarle como argumento (en el contructor) el tipo implementado con la interfaz Runnable. Se ve mejor con un ejemplo.
________________________________________________________
public class TestRunnable implements Runnable { //Dato int hilo; public TestRunnable(int hilo) { this.hilo = hilo; } public static void main (String []args) { (new Thread(new TestRunnable(0))).start(); (new Thread(new TestRunnable(1))).start(); } public void run () { for (int i = 0; i < 500000; i++) { if ((i % 500) == 0) System.out.println(hilo + " : " + i); } } }
__________________________________________
Referencias:

0 comentarios:
Publicar un comentario en la entrada