¿Cómo establecer un temporizador en Java?
¿Cómo establecer un temporizador, por ejemplo de 2 minutos, para intentar conectarse a una base de datos y luego lanzar una excepción si hay algún problema en la conexión?
140
3
Así que la primera parte de la respuesta es cómo hacer lo que pide el tema, ya que así fue como lo interpreté inicialmente y a algunas personas les pareció útil. La pregunta se aclaró desde entonces y he ampliado la respuesta para abordar eso.
Configuración de un temporizador
Primero tienes que crear un Timer (aquí estoy usando la versión
java.util
):..
Para ejecutar la tarea una vez se haría:
Para que la tarea se repita después de la duración harías:
Hacer que una tarea se repita después de su duración
Para hacer específicamente lo que pide la pregunta aclarada, es decir, intentar realizar una tarea durante un periodo de tiempo determinado, se podría hacer lo siguiente:
Esto se ejecutará normalmente con excepciones si la tarea se completa en 2 minutos. Si se ejecuta más tiempo, se lanzará la TimeoutException.
Un problema es que aunque se obtenga una TimeoutException después de los dos minutos, la tarea continuará ejecutándose, aunque presumiblemente una base de datos o una conexión de red eventualmente se agotará y lanzará una excepción en el hilo. Pero ten en cuenta que podría consumir recursos hasta que eso ocurra.
Utiliza esto
Vale, creo que ahora entiendo tu problema. Puedes usar un Futuro para intentar hacer algo y luego hacer un timeout después de un rato si no ha pasado nada.
Por ejemplo