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?