Я заметил, что NetBeans предупреждает меня об использовании Thread.sleep () в цикле while в моем Java-коде, поэтому я провел небольшое исследование по этому вопросу.Похоже, что в первую очередь проблема связана с производительностью, когда ваше условие while может стать истинным, пока счетчик все еще спит, тратя таким образом время настенных часов на ожидание следующей итерации.Все это имеет смысл.
Моему приложению необходимо связаться с удаленной системой и периодически запрашивать состояние операции, ожидая завершения операции перед отправкой следующего запроса.На данный момент код логически делает это:
String state = get state via RPC call
while (!state.equals("complete")) {
Thread.sleep(10000); // Wait 10 seconds
state = {update state via RPC call}
}
Учитывая, что обстоятельства проверяют удаленную операцию (это довольно дорогой процесс, поскольку он выполняется в течение нескольких секунд), является ли это допустимым использованиемThread.sleep () во время цикла?Есть ли лучший способ структурировать эту логику?Я видел несколько примеров, где я мог бы использовать класс Timer, но я не вижу преимущества, так как он все еще, кажется, сводится к той же простой логике выше, но с гораздо большей сложностью.
Имейте в виду, что удаленная система в этом случае не находится под моим непосредственным контролем и не написана на Java, поэтому изменение этого конца на более «совместное» в этом сценарии не вариант.Единственный вариант для обновления значения моего приложения для состояния - это создание и отправка сообщения XML, получение ответа, анализ его, а затем извлечение необходимой информации.
Любые предложения или комментарии приветствуются..