Colocar tiempo límite en Java


En programación algunos procesos y eventos se pueden ejecutar indefinidamente, por ejemplo con ciclos do-while, que no saldrán del ciclo mientras no se cumpla una condición. Adicional podemos agregar una segunda condición de límite de tiempo, de manera que podemos interrumpirlo para evitar errores o procesos que tardarían mucho sin un control.

Ejemplo, podemos usar la clase Calendar para crear una instancia del tiempo y luego crear otra para verificar la diferencia entre dos tiempos:

C1 indica el tiempo límite. C2 solo es para comparar si pasó ese límite.

La variable c1 contiene el tiempo actual +5seg (futuro que usamos como límite), si colocamos un sleep de 2 segundos y luego comparamos con c2 que es el tiempo actual, indicaría -1 ya que no pasó de 5 segundos.

Si colocamos un sleep de 7 segundos y luego comparamos con c2 que es el tiempo actual, indicaría 1 ya que esta vez sí sobre pasó los 5 segundos.

Puedes probarlo rápidamente utilizando un compilador online, solo copia y pega el ejercicio en https://www.jdoodle.com/online-java-compiler/

Esto fue un ejemplo general para probar el funcionamiento. Para aclararlo y que nos sea más útil, es mejor utilizarlo en alguna función.

 

Ejemplo más ideal

Modo de uso

Digamos que estamos ejecutando algún ciclo y queremos salir cuando pase el tiempo límite.

Esto es una idea general, nosotros establecemos cuando salir del ciclo normalmente con una variable que controlamos finalizar = true, pero adicional establecemos un timeout para las operaciones, si se pasa del tiempo límite, se sale del ciclo. Esto es útil para ciertos eventos, si tenemos consultas que no deben tardar tanto, conexiones que debemos interrumpir si se exceden o si queremos que se repitan cada cierto tiempo.

También se podría establecer un límite de intentos, con otra variable indicar por ejemplo un límite de 3 y colocamos que, si al tercer intento no se ha logrado el proceso, se interrumpa para no realizarlo indefinidamente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *