en mi código que estoy usando
Thread.currentThread().sleep(sleepTime);
en la parte principal (no hilo) del código.
Parece que funciona bien, pero me preocupa que pueda haber alguna trampa oculta que me muerda el trasero más tarde.
¿Hay una mejor manera de hacer que su proceso principal permanezca por un tiempo? o es esta la metodología prescrita?
EDITAR:
En respuesta a por qué lo estoy haciendo de esta manera ...
Tengo un proceso que se conecta a través de HTTP o FTP a hosts remotos y hace cosas.
En otras palabras...
cosas...
conectarse a control remoto ...
hacer cosas con conexión remota ...
conexión cercana...
mas cosas...
repita según sea necesario.
Descubrí que, en casos muy raros, la conexión simplemente se va a la tierra. No falla, no arroja ninguna excepción, simplemente desaparece. Y está bloqueando, por lo que no hay una forma en línea de configurar un temporizador.
Entonces, mi solución es hacer esto ...
cosas...
iniciar nuevo hilo con conexión en él ...
entrar en un ciclo infinito con un temporizador en el proceso PRINCIPAL (no en el hilo generado) y esperar a que
a) el hilo de conexión para completar su tarea y establecer alguna bandera como hecho
o
b) espere un tiempo preestablecido y si el hilo de conexión no ha informado que ha finalizado, mátalo y continúe.
Es en el proceso principal donde tengo la intención de dormir durante un tiempo, me despierto y veo si el MAX_WAIT_TIME ha expirado. Si no, vuelve a dormir y espera un poco más.
Parece mucho más eficiente (en el procesador) que sentarse en un ciclo while estándar, ya que eso realmente interferiría con el negocio del hilo de conexión de hacer lo que tiene que hacer.
Creo que mi pregunta realmente es ... ¿hay algo inseguro en este enfoque? Veo por las respuestas que, dado lo que estoy haciendo, parece que no hay. Tal vez debería haber preguntado si hay un enfoque más estandarizado.