Los sistemas actuales son capaces de realizar más de una tarea a la vez y los usuarios cada día demandan de más capacidad y velocidad en las tareas. Con los hilos podemos lograr correr más de una sola tarea a la vez. Un ejemplo que podríamos mencionar es el enviar un correo mientras el sistema está recibiendo otros correos electrónicos. No suena muy eficiente tener que esperar enviar el correo para poder recibir los correos que nos están enviando.
Ahora si vemos algún ejemplo en el entorno de la computación que difícil seria usar un navegador de internet y tener que esperar mientras descargamos un video, película o imagen para poder continuar navegando. Por suerte actualmente podemos dar clic en descargar y mientras esa descarga termina podemos continuar navegando en internet. Esta es la idea que deseamos desarrollar, tener la posibilidad que nuestro sistema pueda estar haciendo varias tareas al mismo tiempo.
Ahora vamos a ver un ejemplo muy simple de cómo crear un hilo.
Lo primero que debemos hacer es heredar de la clase Thread o implementar la interfaz Runnable. Al final van a trabajar muy similar, pero se implementar un poquito diferente. Es importante también estudiar el ciclo de vida de un hilo, en este post no lo vamos a describir, pero pueden buscarlos en internet para que entiendan mejor cómo se comportan los hilos.
Vamos a iniciar utilizando la interfaz Runnable. Entonces tenemos que agregar una clase normal que desarrollamos en Java. Cuando tenemos esta clase lista vamos a implementar la interfaz Runnable que nos va a permitir desarrollar el hilo.
Para este ejemplo vamos a crear un pequeño cronometro, entonces debemos crear un proyecto llamado timer. Cuando tenemos el proyecto listo vamos a crear una clase llamada TimerControl.
Se debe de implementar la interfaz Runnable. Cuando ya tenemos esto listo debemos sobrescribir el método run que se encarga de ejecutar el código que tenemos en paralelo. Además de esto debemos recordar que el hilo se va a encontrar vivo mientras el método run se encuentre corriendo.
En nuestro ejemplo necesitamos enviar un JLabel para poder mostrar como los números se van actualizando en el sistema por medio del hilo.
Para poder implementar el hilo con Runnable vamos a requerir hacer una variable de tipo Thread que se va a encargar de ejecutar el hilo. Esta variable se debe inicializar y se le tiene que pasar por parámetro el hilo que queremos que se ejecute.
Ahora lo que se debe hacer es invocar el método start que tenemos en la clase Thread. Por medio de este método se va hacer el llamado al método run que sobrescribimos en la clase TimerControl.
Antes de correr nuestra aplicación vamos a agregar un método sleep. Este método sleep nos permite detener el hilo por un tiempo antes que se debe dar en milisegundos. Cuando este tiempo se termina nuestro programa continúe corriente hasta salid del método run. En nuestro caso vamos a dejarlo con un ciclo infinito para que continúe nuestro cronometro.
Tenemos que tener presente que a la hora de llamar el método sleep debemos agregar un try/catch por cualquier posible error que este genere.
Luego vamos a tener una clase grafica llamada MainWindow que se va a encargar de agregar el label y donde vamos a llamar nuestro Hilo
Como podemos ver en las líneas 19 se crear un objeto de tipo Thread donde vamos a pasar en el constructor un objeto de tipo TimerControl. A este se le debe pasar también el Label que vamos a usar para actualizar nuestro cronometro.
Después en la línea 20 simplemente ejecutamos el método start para poder correr nuestro hilo.
Ya estamos listos para correr nuestro programa y vamos a ver que esta muestra el tiempo en nuestra pantalla.
Este solo muestra el contador incrementando, se ve muy simple pero ya tenemos una forma de implementar hilos en Java