Полный текст статьи почитать можно здесь: Как приостановить выполнение кода в Java (attacomsian.com)
Способы:
1. Thread.sleep
try {
System.out.printf("Start Time: %s\n", LocalTime.now());
Thread.sleep(2 * 1000); // задержка 2 секунды
System.out.printf("End Time: %s\n", LocalTime.now());
} catch (InterruptedException e) {
e.printStackTrace();
}
обработка исключений необходима для многопоточной среды, где несколько потоков выполняются параллельно для выполнения различных задач.
2. TimeUnit.SECONDS.sleep();
try {
System.out.printf("Start Time: %s\n", LocalTime.now());
TimeUnit.SECONDS.sleep(2); // Wait 2 seconds
System.out.printf("End Time: %s\n", LocalTime.now());
} catch (InterruptedException e) {
e.printStackTrace();
}
Кроме указания задержки в секундах есть методы в других единицах времени: наносекунды, микросекунды, миллисекунды, минуты, часы и дни.
TimeUnit.MINUTES.sleep(5);
TimeUnit.HOURS.sleep(2);
TimeUnit.DAYS.sleep(1);
3. интерфейс ScheduledExecutorService
Исключает задержки по времени, которые возникают при выполнении другого кода.
Выполнение кода задается в методе timer()
Запуск после 2 секунд (service.schedule):
public class Runner {
public static void main(String[] args) {
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
// Execute timer after 2 seconds
service.schedule(Runner::timer, 2, TimeUnit.SECONDS);
}
public static void timer() {
System.out.println("Current time: " + LocalTime.now());
}
}
Запуск каждую секунду (service.scheduleAtFixedRate):
public class Runner {
public static void main(String[] args) {
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
// Execute timer every second
service.scheduleAtFixedRate(Runner::timer, 0, 1, TimeUnit.SECONDS);
}
public static void timer() {
System.out.println("Current time: " + LocalTime.now());
}
}
|