Runnable y Thread en Java - Ejecutar código cada cierto tiempo

Java – Ejecutar código de manera repetitiva cada cierto tiempo con Runnable y Thread

Hoy veremos cómo usar Thread y Runnable en Java para ejecutar código cada N milisegundos en un hilo separado del principal.

Crearemos un Runnable y lo vamos a ejecutar en un nuevo hilo creado con Thread, de esa manera podremos imprimir un mensaje cada segundo para demostrar el uso, aunque en la vida real podría servir para otras cosas.

Runnable y Thread en Java - Ejecutar código cada cierto tiempo
Runnable y Thread en Java – Ejecutar código cada cierto tiempo

Personalmente utilicé esto para refrescar un reloj en una interfaz creada con Swing.

Un poco de historia

Estaba en mi trabajo y tenía que entregar un proyecto, ya todo estaba terminado excepto una cosa: un reloj que iba en la interfaz (era algo de un checador de horarios).

Si estuviera en JavaScript, habría usado al buen amigo setInterval, pero no, esto es Java. Así que investigando un poco encontré que la combinación de Runnable y Thread en Java pueden ser un equivalente a setInterval de JavaScript.

Nota

Sé que este no es el lugar, pero nunca es malo decirlo: Java y JavaScript no son lo mismo, solamente estoy mencionando alternativas, ya que lo único que tienen en común es que ambos son lenguajes de programación.

Runnable y Thread en Java

Bueno, ahora sí a lo que venimos. Ya lo dije hace un momento, para demostrar el uso de esto vamos a imprimir un mensaje en la consola cada segundo.

De esa manera vamos a ejecutar código cada cierto tiempo sin interrumpir el hilo principal de la app.

Definir el Runnable

Definimos un nuevo objeto de tipo Runnable y sobrescribimos el método run. Dentro del método ponemos un ciclo while infinito (el cual detendría el hilo principal, pero como no es el principal, no pasará nada).

Ya dentro del ciclo dormimos o esperamos determinado tiempo y ejecutamos el código que será repetido. Por lo tanto queda así:

El método Thread.sleep recibe el número de milisegundos que el hilo duerme. Como queremos que el código se repita cada segundo, dormimos mil milisegundos.

Thread.sleep puede generar una excepción de tipo InterruptedException así que la manejamos con un try catch. No está de más mencionar que también va a lanzar una de tipo IllegalArgumentException si el número de milisegundos es negativo.

Más información en la documentación oficial.

Ejecutar Runnable con Thread

Una vez que ya definimos el Runnable, lo ejecutamos en un nuevo hilo. El siguiente código lo demuestra:

Gracias a esto podríamos crear más hilos y todo eso.

Ejemplo de Runnable y Thread en Java

Ahora pongamos todo junto y veamos un ejemplo en donde se ejecuta el código de manera repetitiva cada cierto tiempo. La clase Main queda así:

En el hilo principal realizamos las operaciones comunes mientras que en el que creamos se estará ejecutando de manera separada y paralela.

Probar ejemplo

Eres libre de descargar el código. Recuerda instalar Java y luego NetBeans. También puedes ejecutar el código directamente desde mi blog:

Con eso terminamos por hoy. Te invito a leer más sobre Java.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Java – Ejecutar código de manera repetitiva cada cierto tiempo con Runnable y Thread”

  1. Pingback: Java y swing: mostrar y refrescar reloj con hora actual - Parzibyte's blog

Dejar un comentario