Если вы хотите сделать паузу, используйте java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Спать одну секунду или
TimeUnit.MINUTES.sleep(1);
Спать минуту.
Поскольку это цикл, это представляет собой внутреннюю проблему - дрейф. Каждый раз, когда вы запускаете код, а затем засыпаете, вы будете немного отвлекаться, скажем, каждую секунду. Если это проблема, не используйте sleep
.
Кроме того, sleep
не очень гибкий, когда дело доходит до контроля.
Для запуска задачи каждую секунду или с задержкой в одну секунду я настоятельно рекомендую a ScheduledExecutorService
и либо scheduleAtFixedRate
или scheduleWithFixedDelay
.
Например, чтобы запустить метод 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");
}
И в Java 7:
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
myTask();
}
}, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
Thread.Sleep()
.