Когда можно использовать Thread.sleep()?
Я понимаю, что этот метод если и можно использовать, то крайне редко и только в некоторых случаях.
К примеру у меня следующая ситуация: использую docker-compose.
Есть 3 images. back, front, mysql.
И back зависит от mysql.
depends_on:
- sqlServer
Но мне ещё нужно создать бд в sqlServer, перед тем, как docker-compose приступит к back'у.
Я нашёл скрипты sh. В которых отправляется запрос на сервер и если ответ не удовлетворительный, тогда sleep 1.
Собственно сам вопрос. Могу ли я написать эту же логику на Java, в которую потом можно вмешаться, изменить и т.д., или лучше писать на sh, которые сложно поддерживать и т.д.
public static void attemptToConnectToDatabase(DriverManagerDataSource dataSource, short count) {
if (count < 0) throw new NumberFormatException("The count of attempt must be positive value");
for (int i = 0; i < count; i++)
try {
dataSource.getConnection();
Log.logger.info("Connection was successful");
break;
} catch (SQLException e) {
Log.logger.info("Connection attempt was broken. DatabaseConnection will try to connect to the database {} times.", count);
sleep();
}
}
Я считаю, что в данном кейсе можно использовать Thread.sleep(),т.к.
- Этот метод работает 1 раз при инициализации beans
- Его легче сопровождать, чем sh скрипт.
- Даже учитывая тонкости
sleepметода программа засн1ёт не на 2 сек, а на 5 - мне хуже не станет.