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.

Leave a Reply