java

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

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í:

See the gist on github.

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:

See the gist on github.

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í:

See the gist on github.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • Excelente código, sencillo pero muy funcional, lo implemente en sockets y quedó fantástico, gracias maestro.

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

4 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

6 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.