Как создать задержку в Java?
Я пытаюсь реализовать что-то на Java и мне нужно сделать задержку в несколько секунд в цикле while.
while (true) {
if (i == 3) {
i = 0;
}
ceva[i].setSelected(true);
// Здесь мне нужна задержка
ceva[i].setSelected(false);
// И здесь мне нужна задержка
i++;
}
Я хочу создать шаговый секвенсор. Как мне реализовать задержку в Java?
5 ответ(ов)
Используйте Thread.sleep(1000)
для того, чтобы приостановить выполнение программы на 1000 миллисекунд (1 секунду).
Пример кода:
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
Важно отметить, что метод Thread.sleep()
может вызывать InterruptedException
, поэтому обработка этого исключения является обязательной. В приведенном коде при возникновении исключения мы заново устанавливаем статус прерывания потока, вызывая Thread.currentThread().interrupt()
. Это полезно для корректной обработки прерываний в многопоточных приложениях.
Вы можете использовать следующий метод для приостановки выполнения программы на заданное количество миллисекунд:
public static void wait(int ms) {
try {
Thread.sleep(ms);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
После определения этого метода вы сможете вызывать его в любом месте вашего кода, например:
wait(1000);
Этот вызов остановит выполнение программы на 1000 миллисекунд (или 1 секунду). Обратите внимание на то, что метод wait
обрабатывает исключение InterruptedException
, которое может произойти, если поток, который ждёт, будет прерван. В случае прерывания мы устанавливаем статус потока в прерванный с помощью Thread.currentThread().interrupt()
, что позволяет корректно обработать такое событие.
Вам необходимо использовать вызов Thread.sleep()
.
Дополнительную информацию вы можете найти здесь: https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html
Чтобы использовать метод Thread.sleep(100);
, нужно помнить, что время указывается в миллисекундах.
Вот пример кода, который демонстрирует использование этого метода:
public class SleepMessages {
public static void main(String args[])
throws InterruptedException {
String importantInfo[] = {
"Лошади едят овес",
"Кто-то ест овес",
"Маленькие ягнята едят плющ",
"И козленок тоже будет есть плющ"
};
for (int i = 0; i < importantInfo.length; i++) {
// Пауза на 100 миллисекунд
Thread.sleep(100);
// Вывод сообщения
System.out.println(importantInfo[i]);
}
}
}
В этом примере программа будет выводить сообщения из массива importantInfo
, делая паузу в 100 миллисекунд между выводами. Если вам нужно изменить длительность паузы, просто поменяйте значение в Thread.sleep()
, передавая нужное количество миллисекунд.
Я понимаю, что это очень старая публикация, но это может помочь кому-то:
Вы можете создать метод, который позволит вам легко приостанавливать выполнение программы. Например, вы можете использовать pause(1000)
или любое другое значение в миллисекундах:
public static void pause(int ms) {
try {
Thread.sleep(ms);
} catch (InterruptedException e) {
System.err.format("InterruptedException : %s%n", e);
}
}
Этот метод нужно разместить прямо перед public static void main(String[] args)
внутри класса. Для вызова метода просто используйте pause(ms)
, заменив ms
на необходимое количество миллисекунд, на которое нужно приостановить выполнение. Таким образом, вам не придется каждый раз вставлять весь блок try-catch, когда вы хотите приостановить выполнение.
Разница между "wait()" и "sleep()" в Java
Почему методы wait() и notify() объявлены в классе Object в Java?
Как объявить массив в одну строку?
Загрузка JDK Java на Linux через wget приводит к отображению страницы лицензии вместо установки
Создание репозитория Spring без сущности