в моем коде я использую
Thread.currentThread().sleep(sleepTime);
в основной части (не объект Thread) кода.
Кажется, все работает нормально, но я волнуюсь, что может быть какая-то скрытая ловушка, которая позже укусиет меня в задницу.
Есть ли лучший способ заставить ваш основной процесс какое-то время сидеть без дела? или это предписанная методология?
EDIT:
В ответ на вопрос, почему я так делаю ...
У меня есть процесс, который подключается через HTTP или FTP к удаленным хостам и делает вещи.
Другими словами ...
материал ...
подключиться к удаленному ...
делать вещи с удаленным подключением ...
закрыть соединение ...
больше вещей ...
повторите при необходимости.
Я обнаружил, что в очень очень редких случаях, связь просто разрывается в la la land. Это не подводит, не бросает никаких исключений, оно просто уходит.
И это блокирует, так что нет встроенного способа установить таймер.
Итак, мое решение сделать это ...
материал ...
начать новую тему с подключением к ней ...
войти в бесконечный цикл с таймером в процессе MAIN (а не в порожденном потоке) и ждать либо
a) поток соединения завершает свою задачу и устанавливает для некоторого флага значение «done»
или
b) подождать некоторое заданное количество времени и, если поток соединения не сообщил о завершении, убить его и двигаться дальше.
Именно в основном процессе я намерен поспать некоторое время, проснуться и посмотреть, не истек ли срок действия MAX_WAIT_TIME. Если нет, то возвращайтесь спать и подождите еще немного.
Это кажется гораздо более эффективным (на процессоре), чем в стандартном цикле while, поскольку это действительно мешало бы бизнесу потока соединений делать то, что ему нужно.
Полагаю, мой вопрос на самом деле ... есть ли что-нибудь небезопасное в этом подходе. Я вижу из ответов, что, учитывая то, что я делаю, похоже, что нет. Возможно, я должен был спросить, есть ли более стандартизированный подход?