Как сделать задержку в итерациях цикла for?
Уже чего только не перепробовал, конструкция Handler и Runnable задерживается только 1 раз, не подходит. В моём цикле for производится действие и начинается новая итерация, но мне необходимо чтобы между "действие" и "итерация" было еще "задержка 1 сек" Как такое реализовать?
Ответы (2 шт):
Автор решения: DronDron
→ Ссылка
Для "задержи" текущего потока:
Thread.sleep(количество_миллисекунд);
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Thread.html#sleep(long)
Метод также может кидать InterruptedException. Надо либо заворачивать в try/catch, либо писать throws InterruptedException у метода.
Пример вывода чисел от 1 до 10 с паузой в секунду:
for (int i = 1; i <= 10; ++i) {
System.out.println("i: " + i);
try {
Thread.sleep(1000);
}
catch (InterruptedException exception) {
System.out.println(exception.getMessage());
}
}
Автор решения: Scruffy the Janitor
→ Ссылка
class ThreadDemo {
public static void main (String[] args){
System.out.println("Main stream");
MyThread mr1 = new MyThread("Thread #1");
MyThread mr2 = new MyThread("Thread #2");
MyThread mr3 = new MyThread("Thread #3");
MyThread mr4 = new MyThread("Thread #4");
MyThread mr5 = new MyThread("Thread #5");
for (int count=0;count<50;count++){
System.out.print("@");
try{
Thread.sleep(400);
}catch (InterruptedException ex) {
System.out.println(ex);
}
}
System.out.print("End of main.");
}
}
class MyThread implements Runnable {
String thrd="";
Thread thrd1;
MyThread(String Name){
thrd = Name;
thrd1 = new Thread(this);
thrd1.start();
}
@Override
public void run(){
try {
System.out.println("Запуска потока - "+thrd);
for(int count = 0 ; count < 10;count++) {
Thread.sleep(200);
System.out.println("В - "+thrd+" ; счетчик - "+ count);
}
System.out.println("Конец");
} catch (InterruptedException ex) {
System.out.println(ex);
}
}
}