Threads de Control

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 tus vacaciones?

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO