Java задержка по времени

Я пытаюсь сделать что-то на Java, и мне нужно что-то ждать / задерживать в течение нескольких секунд в цикле while.

Я хочу создать секвенсор шагов, и я новичок в Java. Есть предложения?

4 ответов

если вы хотите сделать паузу, то используйте java.util.concurrent.TimeUnit :

спать одну секунду или

поскольку это цикл, это представляет собой неотъемлемую проблему — дрейф. Каждый раз, когда вы запускаете код, а затем спите, вы будете немного дрейфовать от запуска, скажем, каждую секунду. Если это проблема, то не используйте sleep .

далее sleep не очень гибкими, когда дело доходит до контроля.

для запуск задачи каждую секунду или с задержкой в одну секунду я бы сильно рекомендую ScheduledExecutorService и scheduleAtFixedRate или scheduleWithFixedDelay .

например, для запуска метода myTask каждую секунду (Java 8):

Необходимо сделать цикл, в котором происходит выполнения действия -> задержка (допустим секунда) -> опять действие.

Мои попытки приводят к тому, что действие выполняется, только все задержки "суммируются" и используются одновременно, что приводит к тому, что результат выводиться только к концу цикла.

Прошу помочь если не кодом, то советом/ссылкой на нечто подобное.

1 ответ 1

В чем проблема? Ваш вариант вполне подходит. Можно немного красивее:

Все происходит как Вы и хотите: выполняется Ваш код -> задержка (1 сек) -> опять выполняется Ваш код . И так 3 раза.

тебе же компилятор уже ответил на вопрос. ".. Exception must be caught or declared to be thrown .." Это значит, что так как метод wait() может выбросить InterruptedException, то нужно либо прописать этот эксепшн в throws твоего метода, либо поймать и обработать самому — обвернуть вызов wait() в try-catch.


[an error occurred while processing the directive]
Карта сайта