Si llegaste a este post es por una de dos razones (o por las dos):
- No sabes que es un Thread/Hilo y quieres que algiuen te lo explique de una forma rapida y sencilla.
- Tienes una idea de lo que es un Thread/Hilo pero quieres ver un ejemplo en ejecución, para poder usarlo y complementar tu tarea.
Sin importar cual es la razón por la que estás leyendo este post, aqui está una explicación Express y un ejemplo Sencillo y lo más explicado posible. Incluída el enlace de descarga del código fuente ;D
THREAD o HILO
DEFINICIÓN: Un Thread (en inglés) o Hilo (en Español), se refiere a un subproceso, el cual se ejecuta (supuestamente) en paralelo junto a otros subprocesos. Es la base para entender y crear sistemas o programas ‘multitareas’. Cabe señalar que al referirnos a “ejecutar en paralelo”, nos referimos a ‘PseudoParalelismo’ ya que en realidad no se está trabajando con un paralelismo verdadero.
Por ejemplo:
- Digamos que Un programa tiene 3 Hilos en ejecución (Digamos, una familia con 3 hijos).
- Los cuales tienen como tarea contar del 1 hasta el 10.
- Como cada hilo tiene un tiempo de ejecucion diferente (cada hijo cuenta a velocidad diferente),
- queremos saber cuanto tarda en contar cada hilo (queremos saber que hijo cuenta mas rapido),
- asi que los ponemos a contar a los 3 al mismo tiempo para saberlo.
- Al terminar de contar, cada hilo (hijo) dirá cuanto tiempo tardó en contar.
En el ejemplo, se sobreentiende que cada hijo/hilo cuenta al mismo tiempo que los demás, pero no todos cuentan a la misma velocidad. Asi que aún cuando todos los hilos comienzan a la par, no necesariamente terminan al mismo tiempo ni en el mismo orden. Pasemos al programa:
En nuestro main, lo primero que debemos de hacer es crear y nombrar a cada uno de nuestros hilos, en este ejemplo, usaremos 3 hilos y los nombraremos: Hiro,Zushi y Eddy.
// creamos y nombramos a cada subproceso/hilo/thread contador hilo1 = new contador( "HIRO" ); contador hilo2 = new contador( "ZUSHI" ); contador hilo3 = new contador( "EDDY" );
Y posteriormente, los inicializamos/arrancamos/ejecutamos:
hilo1.start(); // iniciamos el hilo 1 hilo2.start(); // iniciamos el hilo 2 hilo3.start(); // iniciamos el hilo 3
Con eso terminamos con el main y nuestra clase principal. Ahora creamos una clase llamada contador, la cual controlará la ejecución de cada hilo y tambien declaramos unas variables que usaremos para saber el tiempo total de ejecucion de cada hilo y para la pausa que dará cada hilo entre numero y numero:
class contador extends Thread {
private int pausa,tiempoTotal=0;
ahora, asignamos el nombre al hilo que se crea de la siguiente forma:
public contador( String nombre ) {
super( nombre );
}
Y para terminar, creamos el metodo más importante: el método run(). En este método van todas las sentencias que nosotros queremos ejecutar cuando el hilo esté activo:
public void run() { //Se intentaa ejecutar este fragmento de código. try { ... codigo ... } // si el subproceso se interrumpió durante su inactividad, imprimir rastreo de la pila catch ( InterruptedException excepcion ) { excepcion.printStackTrace(); } // imprimir que el hilo terminó de trabajar y el tiempo que tardó en realizar la acción System.err.println( getName() + " termino de contar hasta 10 en un tiempo de: " +tiempoTotal/1000 +" seg." );// Finaliza el proceso del hilo. } // fin del método run
Y ahora, para una mejor comprensión del ejemplo, aqui les dejo el enlace de descarga del proyecto:
<<<DESCARGA AQUI>>>
Espero sea de agrado y ayuda para ustedes, dentro de poco regresaré con más ejemplos ;D
No hay entradas relacionadas.
