Когда можно использовать 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. Этот метод работает 1 раз при инициализации beans
  2. Его легче сопровождать, чем sh скрипт.
  3. Даже учитывая тонкости sleep метода программа засн1ёт не на 2 сек, а на 5 - мне хуже не станет.

Ответы (0 шт):