## Un sencillo Thread de Ejemplo

Este ejemplo define dos clases: SimpleThread y TwoThreadsTest. Empecemos nuestra exploración de la aplicación con la clase SimpleThread -- una subclase de la clase Thread, que es proporcionada por el paquete java.lang:

    class SimpleThread extends Thread {
        public SimpleThread(String str) {
            super(str);
        }
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println(i + " " + getName());
                try {
                    sleep((int)(Math.random() * 1000));
                } catch (InterruptedException e) {}
            }
            System.out.println("HECHO! " + getName());
        }
    }

El primer método de esta clase es un constructor que toma una cadena como su único argumento. Este constructor está implementado mediante una llamada al consturctor de la superclase y es intresante para nosotros sólo porque selecciona el nombre del Thread, que se usará más adelante en el programa.

El siguiente método es el método run(). Este método es el corazón de cualquier Thread y donde tiene lugar la acción del Thread. El método run() de la clase SimpleThread contiene un bucle for que itera diez veces. En cada iteración el método muestra el número de iteración y el nombre del Thread, luego espera durante un intervalo aleatorio de hasta 1 segundo. Después de haber temrinado el bucle, el método run() imprime "HECHO!" con el nombre del Thread.

La clase TwoThreads proporciona un método main() que crea dos threads SimpleThread: uno llamado "Jamaica" y otro llamadao "Fiji". (Si no quieres decidir donde ir de vacaciones puedes utilizar este programa para ayudarte a elegir -- ve a la isla cuyo threads imprima "HECHO!" primero).

    class TwoThreadsTest {
        public static void main (String[] args) {
            new SimpleThread("Jamaica").start();
            new SimpleThread("Fiji").start();
        }
    }

El método main() también arranca cada uno de los threads inmediatamente después siguiendo su construcción con una llamada al método start(). El programa daría una salida parecida a esta:

    0 Jamaica
    0 Fiji
    1 Fiji
    1 Jamaica
    2 Jamaica
    2 Fiji
    3 Fiji
    3 Jamaica
    4 Jamaica
    4 Fiji
    5 Jamaica
    5 Fiji
    6 Fiji
    6 Jamaica
    7 Jamaica
    7 Fiji
    8 Fiji
    9 Fiji
    8 Jamaica
    HECHO! Fiji
    9 Jamaica
    HECHO! Jamaica

Observa cómo la salida de cada uno de los threads se mezcla con la salida del otro. Esto es porque los dos threads SimpleThread se están ejecutando de forma concurrente. Así, los dos métodos run() se stán ejecutando al mismo tiempo y cada thread está mostrándo su salida al mismo tiempo que el otro.

Prueba esto: Modifica el programa principal y crea un tercer Thread llamado "Bora Bora". Compila el programa y ejecútalo de nuevo. ¿Ha cambiado la isla de destino de sus vacaciones?

Ozito