Используйте java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Спи одну секунду или
TimeUnit.MINUTES.sleep(1);
Спи минуту.
Поскольку это цикл, это представляет собой внутреннюю проблему - дрейф. Каждый раз, когда вы запускаете код, а затем засыпаете, вы будете немного отвлекаться, скажем, каждую секунду. Если это проблема, не используйте sleep
.
Кроме того, sleep
не очень гибкий, когда дело доходит до контроля.
Для запуска задачи каждую секунду или с задержкой в одну секунду я настоятельно рекомендую [ ScheduledExecutorService
] [1] и либо [ scheduleAtFixedRate
] [2] или [ scheduleWithFixedDelay
] [3].
Чтобы запустить метод myTask
каждую секунду (Java 8):
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}